Я хочу скопировать несколько именованных диапазонов. Диапазоны имеют установленное соглашение об именах с короткой строкой, затем числом (например, Body1, Body2 и т. д.).
Мой обходной путь перебирает каждое имя листа и копирует диапазон 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