我要将工作表从一个工作簿复制到另一个工作簿。如果我分别复制它们,则单元格将引用外部复制的工作簿。如果我同时复制它们,则单元格引用将引用新工作簿中的工作表。
如果我对外部工作簿中的工作表列表进行硬编码,则一切正常。
$pdo->exec("SET SESSION sql_mode = concat(@@sql_mode, ',ANSI_QUOTES')");
$stmt = $pdo->prepare('
UPDATE Guests SET
"Profile is Subscribed ?" = :subscribed,
"Private ?" = :private
WHERE intID = 123
');
$stmt->execute(['subscribed' => 1, 'private' => 0]);
如果我将工作表列表放在一个变量中并使用它,它就会死掉。
closedBook.Worksheets("dog", "cat", "cow").Copy after:=ThisWorkbook.Sheets(3)
有人知道我在做什么错吗?
答案 0 :(得分:0)
这样的事情怎么样?
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
顺便说一句:在您的代码中,您似乎已经忘记了第二个“仅次于猫”。
答案 1 :(得分:0)
strSheets = "dog", "cat", "cow"
您正在将3个字符串文字分配给1个标识符,这是非法的。
没有String
可以容纳多个字符串值:您需要一个字符串的 array ,并且可以将其包装到Variant
中:
Dim sheeNames As Variant
并使用Array
函数将其分配给数组:
sheetNames = Array("dog", "cat", "cow")
现在您可以按预期使用工作表名称的变体数组:
closedBook.Worksheets(sheetNames).Copy ...
请注意,没有str
前缀(有关系统匈牙利符号中最后的棺材,请参见Making Wrong Code Look Wrong)和复数名称。
也可以内联:
closedBook.Worksheets(Array("dog", "cat", "cow")).Copy ...