使用ThisWorkbook.Sheets(1)的Excel vba代码.Range不工作,但Sheet1.Range工作正常。为什么?

时间:2015-06-17 19:04:40

标签: excel vba excel-vba object

当我使用wb.Sheets(1).Range("A:A").Find(What:=ID, LookIn:=xlValues)时,我得到错误91 - 对象变量或未设置阻止。当我使用Sheet1.Range("A:A").Find(What:=ID, LookIn:=xlValues)时,它返回正确的值。 为什么不同?

是否有我可以参考的流程图或任何可用的简单信息,以了解哪些子命令(我不知道正确的单词)与ThisWorkbookSheets(#)对{{{ 1}}?

我对使用Sheet#.Whatever犹豫不决,因为名字可能会在以后发生变化。我使用Sheet("Name")而不是ThisWorkbook来保留所有代码都附加到相应的工作簿。

您可以提供的任何简单参考信息都很棒。我已经研究过,但仍然不明白哪些子命令适用于哪些父命令。 (同样,可能是错误的术语)。

ActiveWorkbook

1 个答案:

答案 0 :(得分:3)

Sheets(1)和Sheet1的属性没有区别,只要两者都是同一个对象 - 在您的情况下为Worksheet对象。

您因findValue Is Nothing而收到该错误。也就是说,它无法在列中找到ID。使用Find方法时,最好指定每个参数。查找记住您上次查找的内容,即使您是在UI中使用并在VBA中使用查找。

例如,如果在执行查找时在UI中检查MatchCase。然后你在VBA中查找并且不指定MatchCase属性,它将使用你上次设置的任何内容。