对工作表的字符串引用有效,但字符串变量无效



我正在将工作表从一个工作簿复制到另一个工作簿。如果我单独复制它们,则单元格具有对外部复制工作簿的引用。如果我同时复制它们,单元格引用将引用新工作簿中的工作表。

如果我对外部工作簿中的工作表列表进行硬编码,则一切正常。

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  ...

最新更新