yellow_cell = ActiveCell.Address
MsgBox (Range(yellow_cell).Value)
implant = yellow_cell.Offset(6, -2).Address
MsgBox (Range(implant).Value)
第一个MsgBox
有效,但是第二个无效(运行时错误424,需要对象)。
我也尝试过:
implant = ActiveCell.Offset(6, -2).Address
MsgBox (Range(implant).Value)
我收到运行时错误1004,对象“ Range”的方法“ Offset”失败。
有人知道我在做什么错吗?我已经取消了所有单元的合并。
答案 0 :(得分:2)
这是获得所需结果的正确方法:
Dim implant As Range, yellow_cell As Range
Set yellow_cell = ActiveCell
MsgBox yellow_cell.Value
Set implant = yellow_cell.Offset(6, -2)
MsgBox implant.Value
通知:如果活动单元格距离列A不到两列,则由于run-time error 1004
的第二个参数,此代码将产生Offset
功能。
答案 1 :(得分:0)
另一种实现此目的的方法是测试该列是否实际上比2列更靠右,如下所示,这不会引起任何错误:
Sub foo()
Dim yellow_cell As String, implant As String
Dim col As Long
yellow_cell = ActiveCell.Address
MsgBox (Range(yellow_cell).Value)
col = ActiveCell.Column
If col > 2 Then
implant = ActiveCell.Offset(6, -2).Address
MsgBox (Range(implant).Value)
Else
MsgBox "Out of Range!", vbInformation, "Error"
End If
End Sub