在避免.Select,Declared Range变量适用于活动表,但[M5]适用于所有工作表。为什么?

时间:2016-06-08 15:19:50

标签: excel excel-vba vba

我一直在研究How To Avoid Using Select in Excel VBA Macros中的一些想法。我的测试工作簿中有3张纸,并希望在执行其他操作后将光标移动到每张纸上的特定单元格。以下输入单元格值,但仅在初始工作表上将activecell移动到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

这就是我想做的事情(输入单元格值然后移到每张纸上的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,但这会产生1004错误。

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

1 个答案:

答案 0 :(得分:1)

只是为了澄清:

[M5]

然而,我建议不要使用Range("M5")来引用特定的单元格/范围。我也希望改为使用Cells(5, "M")Cells(5, 13)或{{1}}。