我正在将工作表从一个工作簿复制到另一个工作簿。如果我单独复制它们,则单元格具有对外部复制工作簿的引用。如果我同时复制它们,单元格引用将引用新工作簿中的工作表。
如果我对外部工作簿中的工作表列表进行硬编码,则一切正常。
closedBook.Worksheets("dog", "cat", "cow").Copy after:=ThisWorkbook.Sheets(3)
如果我将工作表列表放在一个变量中并使用它,它就会死亡。
strSheets = "dog", "cat", "cow"
closedBook.Worksheets(strSheets).Copy after:=ThisWorkbook.Sheets(3)
有人知道我做错了什么吗?
这样的事情怎么样?
dim T(1 to 3) as string
T(1) = "dog"
T(2) = "cat"
T(3) = "cow"
for x = 1 to 3
closedBook.Worksheets(x).Copy after:=ThisWorkbook.Sheets(3)
Next x
顺便说一句:在你的代码中,你似乎忘记了猫后面的第二个">
>strSheets = "dog", "cat", "cow"
您将 3 个字符串文本分配给 1 个标识符,这是非法的。
没有String
可以容纳多个字符串值:你想要一个字符串数组,你可以把它包装成一个Variant
:
Dim sheeNames As Variant
并使用Array
函数将其分配给数组:
sheetNames = Array("dog", "cat", "cow")
现在,您可以按预期使用工作表名称的变体数组:
closedBook.Worksheets(sheetNames).Copy ...
请注意缺少str
前缀(请参阅使错误的代码看起来错误,了解匈牙利语表示法中的最后一个棺材(和复数名称。
也可以内联:
closedBook.Worksheets(Array("dog", "cat", "cow")).Copy ...