0
複数の名前付き範囲をコピーします。範囲には、短い文字列、番号(例:Body1、Body2など)を持つ命名規則が設定されています。Excel VBA:複数の名前付き範囲のループをコピーします。
私の回避策は各シート名をループし、それぞれの名前付き範囲の代わりにB2:C50という範囲をコピーします。これは私の好みです。
コード:
Dim Bnum As Integer 'Bnum is Loop Counter
Dim Nbodies As Integer 'Nbodies is how many loops should go
Dim BodyNum As String
'BodyNum is the sheet name where the named range is (and also the named range I`d like to copy). The named ranges are workbook wide in this case
Nbodies = Range("N.Bodies") 'Called from elsewhere in the workbook
Bnum = 1 'Initial counter set
BodyNum = "Body" & Bnum 'Name of worksheet+named range which I want to copy
Do Until Bnum = Nbodies + 1
Workbooks(Wkbk).Activate
Worksheets(BodyNum).Range("B2:C50").Copy
'Copies range manually definied in vba B2:C50 in this case. Want to copy named range with the same name as Bodynum, varying the digit for each loop
Workbooks(Inputbk).Activate 'The paste portion works fine
Selection.PasteSpecial Paste:=xlPasteValues
Call Cursor.Cursor
Workbooks(Wkbk).Activate
Bnum = Bnum + 1 'Iterates loop counter
BodyNum = "Body" & Bnum
Loop
あなたがしようとしていることを明確にしてください行う。 – Excelosaurus
ループを使用して別のワークブックに同じ名前のワークシートにあるBody1、Body2、Body3などと呼ばれる複数の名前付き範囲をコピーしたいとします。現在、手動でセルを呼び出す代わりに、名前付き範囲をループで反復処理したいと思います。しかし、 'Range(" Body1 ").Copy'または' Range( "B2:")というセルを手動で呼び出すとき、 'Worksheets(BodyNum).Range(BodyNum).Copy'を使うとデバッグエラーが発生し、 C50 ")'は動作しますが、私はそれが好きなようにループしません –