作者Marty (DNA探針)
看板Visual_Basic
標題Re: [VBA ] EXCEL 新增分頁命名的問題
時間Sat Oct 20 10:17:03 2007
※ 引述《Marty (DNA探針)》之銘言:
※ 引述《yaochi (ddd)》之銘言:
: ※ 引述《m9556 (紫色天平Boy)》之銘言:
: : 你先察看Cells(1,3)這一欄的文字,是否有無法用於命名的文字,
: : 不確定的話,可以將該cell的文字,用一個純文字檔命名看看,
: : 或許可以知道為什麼~~
: : 建議 sheetname =cstr(Cells(1, j)) <<這樣改
: : 我的拙見~~參考看看~~
: MsgBox "sheetname= " & sheetname
: 我在 sheetname 後加一行 MsgBox "sheetname= " & sheetname
: 當 j=3 的時候 讀不到sheetname 而 Cells(1,3) 的值
: 為 bbbbbb 之類的純字串 並無 /.% ...等 特殊符號
: 將 Cells(1,j) 改為 CStr(Cells(1,j)) 依然無效
: 請高手幫幫忙 感謝....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.84.11.70
1F:推 fumizuki:他的sheetname是區域變數 .add.name才是新工作表的name 10/20 09:30
2F:推 fumizuki:我實際測試過並不會產生錯誤 10/20 09:31
3F:→ 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
4F:推 fumizuki:亦或者程式碼的位置不在sheet1中? 10/20 10:55
5F:推 fumizuki:我測試的方法是在sheet1中放一個commandbutton 10/20 10:56
6F:推 fumizuki:把程式放在command的事件中 10/20 10:56
7F:→ fumizuki:試過程式放在模組中會產生1004錯誤 10/20 10:59
8F:推 fumizuki:不需要activate,把cell(i,j)改成sheet1.cell(i,j)即可 10/20 10:59
9F:推 Marty:版大的方式也很不錯..^^ 10/20 13:11