Excel:从工作表调用vba函数时将当前单元格作为参数传递

时间:2016-10-25 04:03:12

标签: excel vba excel-vba excel-2010

我正在尝试创建一个接受单元格作为参数的VBA函数,并使用各种Range.Offset从那里开始工作。此函数将在工作表单元格中调用。为了测试我正在使用这个简单的脚本:

Public Function testPublic(targetCell As Range) As Boolean
   targetCell.Offset(0, 3).Value2 = "Test is successful!"
   testPublic = True
End Function

要查看我是否可以让单元格引用工作,我会传递简单的引用,例如C5,但我只能获得#VALUE!错误。不知道这有什么问题。

尝试将Range更改为Variant,仍然无法正常工作

2 个答案:

答案 0 :(得分:4)

您不能使用工作表中称为UDF的函数来更新工作表中的另一个单元格:该函数只能向包含该函数的单元格返回一个值(数组公式可以返回多个值,但同样仅返回到输入公式的单元格。

有关详细信息,请参阅:https://support.microsoft.com/en-us/kb/170787

答案 1 :(得分:0)

尝试以下调用代码

If testPublic(targetCell:=Range1) Then
  MsgBox "success"
End If

功能代码如下。根据您的逻辑更改ByRef和ByVal。

Public Function testPublic(ByRef targetCell As Range) As Boolean
   targetCell.Offset(0, 3).Value2 = "Test is successful!"
   testPublic = True
End Function