【发布时间】:2016-04-09 00:24:54
【问题描述】:
我有很多格式非常相似的表格;表头相同,周围有很多绒毛。
我想编写代码,以相同的方式更改每张工作表中表格中的某些单元格。这些表可以更改,因此每次运行此例程时感兴趣的范围可能会有所不同。像这样的:
Sub Testing()
Dim WS As Worksheet
Dim WantedRange As Range
'This range could be anything.
Set WantedRange = Cells(5, 5)
For Each WS In Application.ThisWorkbook.Sheets
'Do stuff with WS.WantedRange
Debug.Print WS.WantedRange
Next WS
End Sub
问题是,Debug.Print WS.WantedRange 抛出 Compile error: method or data member not found.
为什么是这样? WantedRange 没有分配父工作表,所以它应该只是一个范围,这是工作表对象支持的属性。
如果将行替换为Debug.Print WS.Range(WantedRange.Address),一切正常。我的问题是,它违背了使用另一个变量来存储范围以便于阅读和提高效率的目的。我还不如存储表示列和行索引的整数并改为写WS.Cells(WantedRowIndex, WantedColumnIndex)。
有没有更好的办法?
编辑 1:
感谢 Scott Cramer,即使未指定范围,也始终使用工作表初始化范围。那么有没有办法在没有初始化工作表的情况下制作类似范围的对象?
【问题讨论】: