2013-01-21 52 views
0

我最近一直在回到VBA中,並且一直在測試變量中字符串添加工作表的概念。我已經能夠成功添加工作表,並且我的代碼的最後兩行僅僅是選擇變量的工作表名稱,然後選擇單元格A +存儲在另一個變量中的行號碼當選擇帶變量的工作表時,Excel 2007 VBA運行時錯誤

In Sheet1中,列A,在A1開始,我有8個不同的名稱列表,循環通過:

  • 鮑勃
  • 傑夫
  • 最大
  • 史蒂夫
  • 羅西
  • 皮帕
  • 佩內洛普
  • 羅布

我期待宏觀結束對選定表「搶」與細胞A9,但是我得到一個運行時1004錯誤

我已經通過加強該代碼,它正在選擇正確的變量,但當它試圖選擇行A9,錯誤出現

我的代碼如下:

Sub Add_worksheets() 

Dim sheetName As String 
Dim rownum As Integer 

rownum = 1 
Range("A" & rownum).Select 
sheetName = ActiveCell.Value 

Do Until Range("A" & rownum).Value = "" 
Range("A" & rownum).Select 
sheetName = CStr(ActiveCell.Value) 
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = sheetName 
Sheets("sheet1").Select 
rownum = rownum + 1 
Loop 

Sheets(sheetName).Select 
Range("A" & rownum).Select 

End Sub 

任何幫助,將不勝感激

回答

0

我也建議你添加if-else檢查工作表名稱存在。爲什麼你要select?我不支持的選擇,因爲你需要它,你可以試試這個:因爲當你增加rownum它去10細胞,這意味着,SHEETNAME不再有名字,但空..

Dim sheetName As String 
Dim rownum As Integer 
Dim WS as WorkSheet 

rownum = 1 
sheetName = Range("A" & rownum).Value '-- remove select 


Do Until Range("A" & rownum).Value = "" 
Range("A" & rownum).Select 
sheetName = CStr(ActiveCell.Value) 
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = sheetName 
Set WS = Sheets(sheetName) 
Sheets("sheet1").Select 
rownum = rownum + 1 
Loop 

rownum = rownum - 1 '-- here 
WS.Activate 
Range("A" & rownum).Value = rownum 

,或者您可能只需使用一個數組做表的創建,然後選擇片後....而不是去來回第一頁......地名..

Sub addSheets() 
Dim rowNum as Integer 
Dim Ws as WorkSheet 
Dim vArray as Variant 

'-- creates one dimensional array 
vArray = WorkSheetFunction.Transpoe(Sheets(1).Range("A1:A9")) 

For rownum = Lbound(vArray) to Ubound(vArray) 
    If IsEmpty(vArray(rowNum)) Then 
     On Error Resume Next 
     Set Ws = Sheets(vArray(rowNum)) 
     If Err.Number <> 0 Then '--no such sheet, so add it 
     Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = vArray(rowNum) 
     Set Ws = Sheets(vArray(rowNum)) 
     End If 
    End IF 
Next rownum 

Ws.Activate 
Ws.Range("A1").offset(rownum).value = rownum 
End Sub 
+0

謝謝您迴應 我之所以使用選擇功能只是爲了突出顯示活動單元格,所以我知道它已按預期存儲了所有參數。我已經複製了你的代碼並且沒有錯誤,但是它取代了我的列表的最後一個值 正如我上面提到的,這只是爲了測試它的概念,因爲我將它實現爲一個更大的'項目'我正在承擔。我將需要選擇變量中的圖紙集並在圖紙上執行功能。我可以簡單地將它們編入索引,但對於長期目標而言,變量的需求至關重要 – mattnhugh

+0

因此,除了替換之外,一切都很合適?我能假設你知道如何去除最後一個單元格的替換嗎?你的代碼是否改變了工作?順便說一句,只要您設置工作表並將其作爲參數提供給函數,就可以運行任何函數,而不一定需要選擇工作表。 – bonCodigo

+0

對遲到的反應抱歉。我已經能夠通過結合你的和我的想法來開展工作。欣賞幫助 – mattnhugh