作者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