VBA代码不会跳转到单元格

时间:2017-02-08 08:24:43

标签: excel vba excel-vba

Hy我正在尝试制作跳转到单元格的代码。

地址存储在变量中。

我尝试了两个选项,但两者都不适用于变量。

它们可以正常使用具体的单元格地址。

Dim stMsg As String
Dim x As String

 x = Left(stMsg, Len(stMsg) / 2) 'x = 'Sheet2'!$C$8

    '1 Option
    Application.Goto Reference:="x" 'this works with format: Sheet2!R8C3

    '2 Option
    With Range("x")  'this works with format: 'Sheet2'!$C$8 , which is exactly x
    .Parent.Activate
    .Activate
    End With

它给了我

  

方法'范围'或对象'全局'失败'错误。

stMsg是在宏的第一部分中找到的变量。第一部分在单元格中采用公式,并在公式中找到先例,即2. stMsg将它们存储起来,这就是我将其与x分开的原因。 stMsg的值是'Sheet2'!$ C $ 8'Sheet2'!$ C $ 8

如何使用x?

2 个答案:

答案 0 :(得分:1)

x是您的变量,您尝试将其用作"x",这是一个仅包含字母 x

的文字

所以你的代码应该更像这样:

Dim x As String
x = Left(stMsg, Len(stMsg) / 2)

'''Option 1
Application.Goto Reference:=x

'''Option 2
With Range(x)
    .Parent.Activate
    .Activate
End With

为两个选项工作:
OP提供的输入:'Sheet2'!$C$8'Sheet2'!$C$8

Sub test_tombata(stMsg As String)

Dim x As String
x = Left(stMsg, Len(stMsg) / 2) 'x = "'Sheet2'!$C$8"
'Debug.Print x

'''Option 1
Application.Goto Reference:=Sheets(Replace(Split(x, "!")(0), "'", vbNullString)).Range(Split(x, "!")(1))

'''Option 2
With Range(x)
    .Parent.Activate
    .Activate
End With

End Sub

为两个选项工作:
OP提供的输入:'Sheet2'!$C$8

Sub test_tombata2(x As String)

'''Option 1
Application.Goto Reference:=Sheets(Replace(Split(x, "!")(0), "'", vbNullString)).Range(Split(x, "!")(1))

'''Option 2
With Range(x)
    .Parent.Activate
    .Activate
End With

End Sub

尝试两者的代码:

Sub TEST_test_tombata()

test_tombata "'Sheet2'!$C$8'Sheet2'!$C$8"

test_tombata2 "'Sheet2'!$C$8"

End Sub

答案 1 :(得分:0)

希望下面是什么,假设K9包含目标范围:

Dim rw, col As integer
rw = Range(Range("K9").Value).Row
col = Range(Range("K9").Value).Column
Application.Goto ActiveSheet.Cells(rw + 0, col - 0)