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?
答案 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)