此错误的原因通常是省略了Set
关键字,例如,
Dim w as Worksheet
w = Sheet1 ' throws error 91
' Correct syntax:
' Set w = Sheet1
如果你告诉我们,在哪一行发生错误,那么一个更具体的答案将很快到来。代码示例的语法看起来很好,但是错误可能是由于代码中的另一行,可能未在您的问题中显示。
是否有更多“有效”的方式来选择范围?就我个人而言,我不喜欢你展示的方法,用字符串作为参数Cells
。字符串很混乱,经常会导致错误,从而导致工作效率的下降。为什么不:
Sheet1.Range(Cells(2,18),Cells(40,11)).Select
' or
Sheet1.Cells(2,11).Resize(39,8).Select
' or
Sheet1.Range("K2").Resize(39,8).Select
或者,在您的工作表中将K2:Q40定义为命名范围,将其称为例如“myRange”,也这样:
Sheet1.Range("myRange").Select ' My personal favourite
但为什么您使用Select
?这通常不是必需的。只要写:
Sheet1.Range("myRange").Copy
但后来我可能会问,为什么您使用Copy
,这是在自己的权利凌乱的方法...
在没有错误发生什么线? –
你在做什么之前和之后?你确定sheet1是被定义的吗? – JMax