![](/img/trans.png)
[英]Keep getting "Run-time error '1004': Select method of Worksheet class failed when trying to select a worksheet
[英]Error 1004 - 'select method of worksheet class failed' when worksheet is Selected
嗨,我的代码有问题,在它的最后一部分收到以下错误:
错误 1004 -“工作表类的选择方法失败”
该代码基本上是在 3 个不同选项卡中执行操作的几乎相同代码的重复,问题发生在最后一个选项卡 (sheet21) 上,我不明白为什么,因为它可以用于其他 2 个选项卡没有问题。
因此,每个选项卡的代码看起来相同,但仅在表格中填充的 excel 公式有所不同。问题出现在工作表选择、工作表 9、工作表 11 和工作表 21 中,最后一个是我收到错误的地方,以前的标签是在正确的选项卡(工作表)中执行没有任何问题。
整个代码很长,并且添加了带有格式和公式的列,所以这里只是我收到错误的部分:
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
最糟糕的是,完全相同的代码构造适用于之前一次性执行的工作表(9)和工作表(11),但是一旦我到达工作表(21),我就会收到 1004 错误和过程停止。
我试过了:
If Worksheets(21).Visible = False Then Sheets(21).Visible = True
Sheets(21).Select
但是由于某种原因,代码在一些完全不同的选项卡 Worksheet(19) 中执行,我不明白为什么。
我正在使用“工作表(#)”命名约定,因为标签会定期更改名称,并且在添加工作表(21)之前使用这种格式似乎工作正常。
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
表是xlVeryHidden
,则True和false在If Worksheets(21).Visible = False
中xlVeryHidden
。 xlVeryHidden
被评估为2
,这被评估为True
。
长话短说:
在选择之前的行上写入Worksheets(21).Visible = xlVisible
。 或Sheet21.Visible = xlVisible
,因为Worksheets(21)
不存在于您的数据中。
一般来说:
您正在尝试按索引选择工作表,但由于您删除了一些工作表,因此您做得太过分了。
名为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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.