在避免.Select,宣布范围variables工作在activesheet,但工作在所有工作表。 为什么?

我一直在研究如何避免在Excel VBAmacros中使用select的一些想法。 我在testing工作簿中有3张纸,并且希望在执行其他操作后将光标移动到每张纸上的特定单元格。 以下input单元格值,但仅将初始工作表中的活动单元移动到M5:

Dim rngTest As Range Dim shtTest As Worksheet Set rngTest = [M5] For Each shtTest In ThisWorkbook.Sheets With shtTest .Range("m10").Value = "hello" End With rngTest.Select Next shtTest 

在这里做我想要的(input单元格值,然后移动到每个工作表上的M5):

 Dim rngTest As Range Dim shtTest As Worksheet Set rngTest = [M5] For Each shtTest In ThisWorkbook.Sheets With shtTest .Range("m10").Value = "hello" End With [M5].Select Next shtTest 

在最上面的示例中,我尝试使每个表单都处于活动状态,然后移动到rngTest,但创build了1004错误。

那么,为什么[M5] .select工作,而rngTest.Select失败?

只是为了澄清:

 Dim rngTest As Range Dim shtTest As Worksheet For Each shtTest In ThisWorkbook.Sheets With shtTest .Range("m10").Value = "hello" End With shtTest.Activate Set rngTest = [M5] rngTest.Select Next shtTest 

但是,我build议不要使用[M5]来指代特定的单元格/范围。 我也更喜欢使用Range("M5")Cells(5, "M")Cells(5, 13)