看板 Visual_Basic 關於我們 聯絡資訊
※ 引述《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
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