質問: i + 1 Next End Sub ### 試したこと ワークブックのオープンメソッド(Application.GetOpenFilename)を、For Each ...Nextステートメントの外に出すと、マクロを実行しても何も転記されず変わりません。 ### 補足情報(FW/ツールのバージョンなど) このテストマクロを作ったエクセルは2010のものですが、実際は2010以降の新しいバージョンのエクセルで作る予定です。
回答: > > ワークブックのオープンメソッド(Application.GetOpenFilename)を、For Each ...Nextステートメントの外に出すと、 > > > そうしないと、ループの回数分(セル一つ毎)にファイル選択ダイアログが開くことになります。 ~~何も実行されないなら記述かどこか間違っているのでしょう。~~ 他の方の回答で指摘されてますが、別ブックを開くことで Selection が変わっているのが原因ですね。 ちなみに、コピー元とペースト先のセル範囲のサイズが同じならループさせる必要はないです。 ``` Sub データ転記() Dim fl As Variant Dim wb As Workbook Dim wsDst As Worksheet Dim i As Long Dim myRange As Range Dim rw As Long Set myRange = Selection '別ブックを開く前に選択範囲を格納しておく i = 2 fl = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") Set wb = Workbooks.Open(Filename:=fl) Set wsDst = wb.Worksheets("転記先") rw = wsDst.Cells(Rows.Count, i).End(xlUp).Row + 1 With myRange wsDst.Cells(rw, i).Resize(.Rows.Count, .Columns.Count).Value = .Value End With End Sub ```