推 fumizuki:他的sheetname是區域變數 .add.name才是新工作表的name 10/20 09:30
推 fumizuki:我實際測試過並不會產生錯誤 10/20 09:31
→ fumizuki:很可能他的儲存格是空的或是有不正確的字元存在 10/20 09:31
'原PO程式碼
Sub 新增分頁()
Dim sheetname As String
Dim j As Integer
For j = 2 To 4
sheetname = Cells(1, j)
MsgBox "sheetname= " & sheetname
With Worksheets.Add
.Name = sheetname
End With
Next j
End Sub
'我實際測的時候的確會產生1004錯誤
'我覺得原因是在於執行 .add時 Excel會Focus在新產生的sheet上
'然而新的sheet中並無資料,
'導致 sheetname = cells(1,j) 中的cells(1,j)無值可傳回
'
'推論如下:(假設資料在sheet1中,值依序為[a,b,c,d])
'程式在j=2,
'cells(1,2) = "b" ,此時cells(1,2)為Sheet1.cells(1,2)
'在執行.add後,產生WorkSheets("b")
'在j=3時,因為Focus在WorkSheets("b"),
'故傳回的值為WorkSheets("b").cells(1,3)
'故產生 1004錯誤
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.84.11.70
推 fumizuki:亦或者程式碼的位置不在sheet1中? 10/20 10:55
推 fumizuki:我測試的方法是在sheet1中放一個commandbutton 10/20 10:56
推 fumizuki:把程式放在command的事件中 10/20 10:56
→ fumizuki:試過程式放在模組中會產生1004錯誤 10/20 10:59
推 fumizuki:不需要activate,把cell(i,j)改成sheet1.cell(i,j)即可 10/20 10:59
推 Marty:版大的方式也很不錯..^^ 10/20 13:11