2

我想参考新添加的表格。它们是通过循环添加的。

它们被命名为Sheet1,Sheet2Sheet3。我还有一个变量n,在创建 a 时等于 1,在Sheet1创建 a 时等于 2,在Sheet2创建 a 时等于 3 Sheet3,依此类推。

我的代码如下所示:

For i = 2 To 1000

If Worksheets("DATA").Cells(i, "A").Value <> "" And Worksheets("DATA").Cells(i, "A").Value <> "TOTAL" Then

Worksheets("Template").Cells(1, "C").Value = Worksheets("DATA").Cells(i, "B").Value
Worksheets("Template").Cells(2, "C").Value = Worksheets("DATA").Cells(i, "C").Value
Worksheets("Template").Cells(3, "C").Value = Worksheets("DATA").Cells(i, "A").Value
Worksheets("Template").Cells(5, "D").Value = Worksheets("DATA").Cells(i, "D").Value
Worksheets("Template").Cells(5, "E").Value = Worksheets("DATA").Cells(i, "E").Value

Sheets.Add

n = 0
n = n + 1

Worksheets("Template").Cells.Copy

Worksheets("Sheet & n").Range("A1").Paste 'Problem is in this line

Worksheets("Sheet" & n).Activate ' And in this line

    Application.PrintCommunication = False
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With

我对标有注释的行有疑问。
我的问题是如何通过使用变量来引用 a Sheet1Sheet2等?n

请耐心等待我,因为我对 VBA 很陌生。如果我的问题含糊不清或难以理解,请告诉我。
先感谢您。

4

2 回答 2

3

引号内的任何内容都""将被视为字符串。

更改"Sheet & n""Sheet" & n

此外,您应该避免使用.Activate. 有趣的阅​​读

还有一件事:P

您不需要Activate粘贴到工作表上。您可以在一行中完成。例如。

ThisWorkbook.Sheets("Sheet1").Range("A1:A5").Copy _
ThisWorkbook.Sheets("Sheet2").Range("A1")
于 2013-11-08T12:52:59.503 回答
3

您还可以在创建工作表时保存对工作表的引用,因此您不必猜测名称。Sheets.Add用我的前两行替换你的行:

Dim oSheet As Worksheet

Set oSheet = Sheets.Add

'***** Do what you need with the sheet
oSheet.Range("A1").Paste
Debug.Print oSheet.Name

'***** Clear the reference when you're done
Set oSheet = Nothing
于 2013-11-08T12:58:31.230 回答