none
マクロ変数について RRS feed

  • 質問

  • マクロについて、よろしくお願いします

    アンケートの回答のあったものから逐次集計ファイルにコピーする際に
    <回答ファイル指定>と集計ファイルの<貼付けシート指定>を手作業で置換してからやると大丈夫なのですが
    変数化すると途中でエラーとなりうまくいきません
    普段は、マクロ記録で利用するくらい知識しかありません

    手作業で置換して使っているマクロの一部です(以下、20様式分続きます)

    Sub 集計ファイルに転記()
    '<回答ファイル指定> ↓
    Workbooks.Open ("D:\UserData\Documents\sikou\2【●●】R2▲▲.xlsx")
    '
    Windows("2【●●】R2▲▲.xlsx").Activate      '← <回答ファイル指定>
            Sheets("様式1-1").Select     '← コピーシートの指定
            Cells.Select
            Application.CutCopyMode = False
            Selection.Copy
            Range("A1").Select
        Workbooks.Open ("D:\UserData\knn\Documents\作業\様式1-1.xlsx")     '← 集計ファイルの指定
            Windows("様式1-1.xlsx").Activate     '← 集計ファイルの指定
            Sheets("2").Select     '← <貼付けシートの指定>
            Range("A1").Select
            ActiveSheet.Paste
            Range("A1").Select
    ' ↓シートタブの色変更
      Sheets("2").Select     '← <貼付けシートの指定>
        With ActiveWorkbook.Sheets("2").Tab     '← <貼付けシートの指定>
            .ThemeColor = xlThemeColorDark1
            .TintAndShade = 0
        End With

    End Sub

    テストでは冒頭で変数を以下のようにして、
    '変数
    Dim book As  Variant
    Dim code As Byte
    booK = "2【●●】R2▲▲.xlsx"
    code = 2

    ファイル名→booK
    シート名→code
    に置換えて設定しましたが、うまくいきません

    <回答ファイル指定><貼付けシートの指定>の部分を

    どのように、すればよいかご教示のほどよろしくお願いします

    2020年5月16日 2:37

すべての返信

  • 検証はしていませんが、おそらく

    Dim code As Byte」を「Dim code As String」とするだけで良いと思われます。

    理由は、 Sheets("2").Select を Sheets(code).Select とした場合、「2」という名前のシートではなく、左から2番目のシートを選択してしまうからです。

    • 回答としてマーク hide.s 2020年5月18日 10:15
    • 回答としてマークされていない hide.s 2020年5月18日 10:15
    2020年5月16日 4:43
  • 勤務先にデータがあるので、月曜日に試してみます

    ありがとうございます

    2020年5月16日 4:50
  • 自宅で簡易テストデータで試行してみました

    変数 book を book2 とに分割してみました
    変数 code を String にしてみました



    Dim book As Variant
    Dim book2 As Variant
    Dim code As String
    book = "D:\Hide\デスクトップ\マクロ作業手順\回答.xlsx"
    book2 = "回答.xlsx"
    code = 2



    '<回答ファイル指定> ↓
    Workbooks.Open (book)
    '
    Windows(book2).Activate      '← <回答ファイル指定>
    --------------------
            Sheets(code).Select     '← <貼付けシートの指定>
    --------------------

    としたら、簡易テストデータではうまくいきました

    月曜日に勤務先でトライしてみます

    変数や変数以外でもブラッシュアップする指摘をいただけると幸いです

    2020年5月16日 5:13
  • 今日、勤務先でトライしました
    うまくいきました

    ありがとうございました
    2020年5月18日 10:13