2016-12-01 35 views
1

我面臨以下問題解決與數據的工作表:如何從Array

我寫的代碼讀取範圍的數據,將數據存儲在數組中,並隨後與該數組中的名稱插入工作表。工作正常,代碼如下:

For intZaehler = 0 To UBound(arrGliederungsebenen) - 1 
ActiveWorkbook.Worksheets.Add(before:=ActiveWorkbook.Worksheets("7_Steuern")).Name = arrGliederungsebenen(intZaehler) 

arrGliederungsebenen已經存儲了數據,我希望新的工作表被命名。我有一個簡單的命名:

arrGliederungsebenen(0) = 1 
arrGliederungsebenen(1) = 1.2 
arrGliederungsebenen(2) = 1.3 
arrGliederungsebenen(3) = 2.1 and so forth 

接下來,我想將一個以前複製的模板粘貼到newley插入的工作表中。我現在面臨的問題是如何正確處理新添加的工作表:
不幸的是 Activesheet.paste Destination:=Worksheets(arrGliederungsebenen(intZaehler).Name).Range("A1:0354").Offset(, 24)不起作用。

任何人都可以告訴我,如何正確地使用數組中的數據來處理工作表的名稱?

+0

'arrGliederungsebenen(intZaehler)'是一個字符串(我認爲),所以'arrGliederungsebenen(intZaehler).Name'並不意味着什麼。嘗試刪除'.Name'。 – bobajob

回答

0

我喜歡設置一個Worksheet對象中的當前片我添加(在我的代碼Dim Sht As Worksheet),它使代碼更短,更清晰,並且更易於調試。

而就本例而言,我使用Sheets("7_Steuern").Range("C7:E9")複製並粘貼每張紙。

代碼(測試)

Option Explicit 

Sub MultipleCreateSheets() 

Dim intZaehler As Integer 
Dim Sht As Worksheet 
Dim arrGliederungsebenen(3) As String 

arrGliederungsebenen(0) = 1 
arrGliederungsebenen(1) = 1.2 
arrGliederungsebenen(2) = 1.3 
arrGliederungsebenen(3) = 2.1 

For intZaehler = 0 To UBound(arrGliederungsebenen) - 1 
    Set Sht = ActiveWorkbook.Worksheets.Add(before:=ActiveWorkbook.Worksheets("7_Steuern")) 
    Sht.Name = arrGliederungsebenen(intZaehler) 

    Sheets("7_Steuern").Range("C7:E9").Copy Destination:=Sht.Range("A1:O354").Offset(, 24)   
Next intZaehler 

End Sub 
+0

謝謝Shai - sht.Name步驟就是我一直在尋找的!不幸的是我還不能滿足。 – Marc

+0

@馬爾可以,不客氣 –

0

什麼是.Name?對我來說似乎是虛假的。

Destination:=Worksheets(arrGliederungsebenen(intZaehler)請將.Name).Range("A1:0354").Offset(, 24)

--->

Destination:=Worksheets(arrGliederungsebenen(intZaehler)).Range("A1:0354").Offset(, 24)