【问题标题】:Excel Fully Qualifying Range (Cells(),Cells())Excel 完全限定范围 (Cells(),Cells())
【发布时间】:2014-09-16 14:26:30
【问题描述】:

我知道很多人都谈到了完全合格的范围。我只是想知道您需要深入了解它才能避免问题。

在示例中,我使用标注变量限定了我的工作表。那么是否有必要 100% 可靠,才能在括号范围内进一步限定?

dim myWS as Worksheet
set myWS = Thisworkbook.Activesheet

-- 使用方法A?

myWS.Range(Cells(1,5), Cells(500,20)).ClearContents

-- 还是方法B?

myWS.Range(myWS.Cells(1,5), myWS.Cells(500,20)).ClearContents

Range 括号内的“Cells”是否默认引用调用它的 myWS.Range,或者“Cells”是否默认引用活动工作表?

如果将 myWS 设置为活动工作表以外的工作表,我会从 Cells 获得意外结果吗?

不难,只是如果你说第二种方式更靠谱的话,我就得回去改很多地方了!

【问题讨论】:

  • Cells 对象引用活动工作表。如果在执行此行时myWS 未处于活动状态,VBA 将抛出错误。
  • 我不确定,但您可以轻松测试它,myWS.range(myAnotherWS.cell, someOtherWs.cell)
  • Method B 是正确的方式
  • 搜索 Stackoverflow。我已经回答了类似的问题

标签: vba excel


【解决方案1】:

仅当您的 myWS 在被调用时处于活动状态时,方法 A 才会起作用。方法 B 更健壮,方法 C 也是如此:

myWS.Range(Cells(1,5).Address, Cells(500,20).Address).ClearContents 

或方法D:

myWS.Range("E1:T500")

【讨论】:

  • 嗯.. C 很有趣。我会用它做实验。 D 对我没有好处,因为我总是有可变的行/列。这个例子过于简单化了。看起来 B 可能是要走的路。
猜你喜欢
  • 2021-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多