例如,如果我在函数的代码中有这个:
If TypeOf Application.Caller Is Range Then
Rng = Application.Caller
With Rng
With .Offset(0, -4)
.Value = 0
End With
With .Offset(0, -6)
.Value = 0
End With
End With
End If
它返回错误。
在调用函数时,如何使用Application.Caller.Offset更改其他单元格的值?
答案 0 :(得分:1)
您无法更改函数中的其他单元格 - Excel不会让您失望。此功能是设计使然:函数只能更改输入的单元格
答案 1 :(得分:0)
根据您的评论,您希望将Offset
与Row
参数一起使用,而不是列。
如果您将Range("B8")
发送到当前代码,则使用With .Offset(0, -4)
会导致错误!由于您有2个(对于列" B")并且您使用Offset
>>的-4
2 - 4 = -2
=运行时错误
变化:
With .Offset(0, -4)
要:
With .Offset(-4, 0)
还有:
With .Offset(0, -6)
要:
With .Offset(-6, 0)
您可以使用以下代码获得所需的结果:
Sub ChangeOffsetCells(Rng As Range)
With Rng
With .Offset(-4, 0)
.Value = 0
End With
With .Offset(-6, 0)
.Value = 0
End With
End With
End Sub
并使用下面的小Test
子来测试它:
Sub Test()
ChangeOffsetCells Range("B8")
End Sub