VBA Excel:如何将一个不同类型的参数传递给函数(或将Int/String强制转换为Range)?

VBA Excel:如何将一个不同类型的参数传递给函数(或将Int/String强制转换为Range)?,vba,excel,Vba,Excel,我正在Excel中编写一些VBA函数,用于计算单词值和输入的交叉和 我将输入作为公共函数cross\u sum(myRange作为Range)作为整数传递给它们,以便它们将单元格引用作为输入,例如=cross\u sum(A1)。很好 但是,当我尝试链接两个函数(如=cross\u sum(word\u value(A1))时,我遇到了th值错误,因为word\u value()返回一个整数值,而不是cross\u sum()设置为期望的范围。但是,我没有找到将整数(或字符串)强制转换为范围的方

我正在Excel中编写一些VBA函数,用于计算单词值和输入的交叉和

我将输入作为
公共函数cross\u sum(myRange作为Range)作为整数
传递给它们,以便它们将单元格引用作为输入,例如
=cross\u sum(A1)
。很好

但是,当我尝试链接两个函数(如
=cross\u sum(word\u value(A1))
时,我遇到了th值错误,因为
word\u value()
返回一个整数值,而不是
cross\u sum()
设置为期望的范围。但是,我没有找到将整数(或字符串)强制转换为范围的方法

由于Excel的内置函数支持链接和范围输入,我想知道如何实现。 不幸的是,这是我的第一个VBA项目,所以我想知道是否以及如何强制转换,或者选择什么类型来实现这两种方式

感谢任何指点

蒂亚,
JBQ

没有您的代码,很难知道您可以更改什么。话虽如此

无法将整数转换为范围。如果这是您想要的,那么您必须创建一个函数来执行此操作

您可以创建一个转换器函数,可能名为
IntegerToRange
,它接受一个整数,经过一些逻辑(可能是1=“A1”、2=“A2”或其他什么),将返回一个范围。然后,您的单元格公式将是
=交叉求和(IntegerToRange(word\u value(A1))


或者,您可以修改
word\u值
函数以返回范围而不是整数。然后,您的单元格公式将是
=交叉求和(word\u值(A1)
您可以将变量传递给函数,该函数可以确定输入的类型:

Public Function Inputs(v As Variant) As String
    If TypeName(v) = "Range" Then
        MsgBox "you gave me a range"
    Else
        MsgBox "you gave me a string"
    End If
    Inputs = "done"
End Function

Sub MAIN()
    Dim st As String
    Dim rng As Range
    st = "A1"
    Set rng = Range(st)
    x = Inputs(st)
    x = Inputs(rng)
End Sub

这将有助于显示您正在使用的实际函数。无法将整数强制转换为一个范围-它们是根本不同的类型。我看到了变量数据类型,但TypeName()函数是我缺少的链接。现在它工作得很好。