嗨,我的代码有问题,该代码的最后部分正收到以下错误:
错误1004-“工作表类的选择方法失败”
该代码基本上是在3个不同选项卡中执行的几乎相同代码的重复,问题出现在最后一个选项卡(sheet21)上,我不明白为什么原因,因为它适用于其他2个选项卡没问题。
因此每个选项卡的代码看起来都一样,只是表格中填充的excel公式有所不同。问题出现在工作表选择,sheet9,sheet11和sheet21中,最后一个是我收到错误的地方,以前的选项卡在适当的选项卡(表)中执行时没有任何问题。
整个代码很长,并且会添加带有格式和公式的列,所以这只是我收到错误的部分:
Sub AddColumns()
'Inserts Four Columns at L:O - Q3 Week High tab
Worksheets(21).Range("L:O").EntireColumn.Insert
'Format colour
Worksheets(21).Select '-------1004 ERROR HERE
Range("L4:N55").Select
With Selection.Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
最糟糕的是,代码的完全相同的构造适用于一次执行的Worksheets(9)和Worksheets(11),但是一旦到达Worksheet(21),我就会收到1004错误并且过程停止。
我尝试过:
If Worksheets(21).Visible = False Then Sheets(21).Visible = True
Sheets(21).Select
但是由于某种原因,该代码正在某些完全不同的选项卡Worksheet(19)中执行,我不明白为什么。
我正在使用“ Worksheet(#)”命名约定,因为选项卡会定期更改名称,并且在添加Worksheet(21)之前,使用这种格式似乎可以正常工作。
答案 0 :(得分:2)
Name
,Index
和CodeName
是工作表的三个属性,它们有很大的不同。在屏幕快照中的代码中,Sheet21
是CodeName
,它可能对应于Worksheets(17)
。
要查看不同之处,请运行以下代码,并查看即时窗口:
Sub TestMe()
Dim i As Long
For i = 1 To Worksheets.Count
Debug.Print Worksheets(i).Name
Debug.Print Worksheets(i).Index
Debug.Print Worksheets(i).CodeName
Debug.Print "-----------------------"
Next i
End Sub
If Worksheets(21).Visible = False
,则 True 和 false 在xlVeryHidden
中无济于事。将xlVeryHidden
评估为2
,并将其评估为True
。
长话短说:
在选择前的行上写Worksheets(21).Visible = xlVisible
。或Sheet21.Visible = xlVisible
,因为您的数据中不存在Worksheets(21)
。
一般来说:
答案 1 :(得分:2)
您正尝试通过索引来选择工作表,但由于您已删除了一些工作表,因此您无法进行扩展。
称为Sheet21
的选项卡可能被索引称为Sheets(16)
或Workheets(16)
。我不确定,因为我看不到标签的顺序,此处的16是指标签栏上显示的第16个标签(包括隐藏等)。顺序。 >
无论选项卡在运行时的可见性如何,以下内容均应起作用。
Sub AddColumns()
'Inserts Four Columns at L:O - Q3 Week High tab
Sheet21.Range("L:O").EntireColumn.Insert
'Format colour
With Sheet21.Range("L4:N55").Interior
.Pattern = xlNone
.TintAndShade = 0
.PatternTintAndShade = 0
End With
如果要强制使其可见,只需使用:
Sheet21.Visible = xlVisible