【问题标题】:Excel VBA: Copy loop for multiple named rangesExcel VBA:多个命名范围的复制循环
【发布时间】:2017-11-11 04:48:49
【问题描述】:

我想复制几个命名范围。范围有一套命名约定,先是短字符串,然后是数字(例如,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

【问题讨论】:

    标签: excel loops named-ranges vba


    【解决方案1】:

    我的理解是,您有一组名为“Body1”..“BodyN”的工作表,每个工作表都有一个带有工作表本身名称的命名范围。

    你提到你Want to copy named range with the same name as Bodynum

    那么你所要做的就是转这条线:

    Worksheets(BodyNum).Range("B2:C50").Copy
    

    进入这个:

    Worksheets(BodyNum).Range(BodyNum).Copy
    

    【讨论】:

    • 它不想调用命名范围,尽管它适用于工作表。我可以调用特定的命名范围,例如使用Worksheets(BodyNum).Range("Body1").Copy,但这对循环没有帮助
    • 请说明您要做什么。
    • 我想使用循环将多个命名范围(称为 Body1、Body2、Body3 等)复制到同名工作表上的单独工作簿中。我希望使用循环迭代命名范围,而不是当前手动调用单元格。但是,使用 Worksheets(BodyNum).Range(BodyNum).Copy 会导致调试错误并且不会运行,同时手动调用单元格(Range("Body1").CopyRange("B2:C50") 都可以,但不会像我希望的那样循环
    • 如果我删除命令的 Worksheets 部分,并且只调用全局范围,例如 Range(BodyNum).Copy,则错误是 Method 'Range of object'_Global' failed
    • 您的意思是工作表 Body1 包含命名范围 Body1,工作表 Body2 包含命名范围 Body2 等,还是所有命名范围 Body1、Body2 等都在同一个工作表上?
    猜你喜欢
    • 2015-08-03
    • 2019-12-05
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    相关资源
    最近更新 更多