2

新しく追加されたシートを参照したい。それらはループによって追加されます。

それらは 、 などと名付けられSheet1ています。またSheet2、 a が作成されたときに 1 に等しく、 aが作成されたときに 2 に等しく、 aが作成されたときに 3 に等しいSheet3変数もあります。 nSheet1Sheet2Sheet3

私のコードは次のようになります。

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

コメントでマークされた行に問題があります。
私の質問は、変数を使用してSheet1Sheet2などを参照する方法ですか?n

私はVBAにまったく慣れていないので、しばらくお待ちください。私の質問があいまいまたは理解しにくい場合は、お知らせください。
前もって感謝します。

4

2 に答える 2

3

引用符で囲まれ""たものはすべて文字列と見なされます。

"Sheet & n"に変更"Sheet" & n

の使用も避けてください.Activate興味深い読み物

そしてもう一つ:P

Activateシートに貼り付ける必要はありません。1行でできます。例えば。

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

ワークシートの作成時に参照を保存することもできるので、名前を推測する必要はありません。Sheets.Add行を私の行の最初の 2 つに置き換えます。

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 に答える