无法从Excel工作表单元格调用VBA函数

无法从Excel工作表单元格调用VBA函数,excel,vba,Excel,Vba,尝试使用excel工作表单元格中的自定义VBA函数时,出现以下错误: “您键入的公式包含错误” 但是,当我从VBA调用相同的函数时,它工作正常 VBA功能: Public Function R1C1_value(RowIndex As Integer, ColIndex As Integer, Optional WorkSheetName As String) As Variant Dim ws As WorkSheet If Trim(WorkSheetName) = "" T

尝试使用excel工作表单元格中的自定义VBA函数时,出现以下错误: “您键入的公式包含错误”

但是,当我从VBA调用相同的函数时,它工作正常

VBA功能:

Public Function R1C1_value(RowIndex As Integer, ColIndex As Integer, Optional WorkSheetName As String) As Variant
    Dim ws As WorkSheet
    If Trim(WorkSheetName) = "" Then
        Set ws = ActiveSheet
    Else
        Set ws = ActiveWorkbook.Worksheets(WorkSheetName)
    End If
    R1C1_value = ws.Cells(RowIndex, ColIndex).Value
End Function
VBA函数调用:

Sub R1C1_value_test()
    Dim res
    res = R1C1_value(1, 9, "CVP")
    MsgBox "res: " & res
End Sub
Excel函数调用

=R1C1_value(1,9)

函数名在Excel中不是有效的名称,即使它在VBA中被接受。如果您将其更改为xR1C1_值,您的函数应该可以工作。

谢谢,它可以工作。顺便说一句,这背后的原因是什么?从Excel帮助中,我不清楚为什么Excel会拒绝这个特定字符串。名称不能与单元格地址或Excel内置名称冲突;但似乎还有其他未记录的拒绝原因。我猜,因为
R1
是一个单元格的有效地址,所以它无法判断您谈论的是单元格值还是not@DLeh你的评论对我来说毫无意义。函数名不是
R1
,字符串
R1C1\u值
不是有效的单元格地址。此外,即使您假定以可能是有效单元格地址的内容开头的函数名将被拒绝,像
A1C1\u value
这样格式相同的函数名也将被接受。您没有提供太多关于无效内容的信息,我只是猜测一下。所以这是特定于
R1C1
的东西是无效的?我在让excel查找我调用的函数时遇到了问题,并试图弄清楚这是否是因为函数名可能试图解析为单元格地址或其他内容