VBA Excel:如何将一个不同类型的参数传递给函数(或将Int/String强制转换为Range)?
我正在Excel中编写一些VBA函数,用于计算单词值和输入的交叉和 我将输入作为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()设置为期望的范围。但是,我没有找到将整数(或字符串)强制转换为范围的方
公共函数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()函数是我缺少的链接。现在它工作得很好。