VBA Excel:如何将不同types的parameter passing给函数(或将Int / String转换为范围)?

我在Excel中写一些VBA函数来计算字的值和交叉input的总和。

我将input作为Public Function cross_sum(myRange As Range) As Integer传递给它们,以便它们将单元格引用作为input,例如=cross_sum(A1) 。 工作正常。

但是当我尝试链接=cross_sum(word_value(A1))两个函数时,我遇到了VALUE错误,因为word_value()返回一个整数值,而不是设置期望范围cross_sum() 。 但是我没有find一个方法来将一个整数(或string)转换成一个范围。

由于Excel的内置函数支持链接以及范围input,我不知道如何。 不幸的是,这是我的第一个VBA项目,所以我想知道是否以及如何投射或select什么types来使这两种方式工作。

任何指针赞赏!

TIA,JBQ

您可以将Variant传递给一个函数,该函数可以确定input的types

 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 

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

没有办法将一个整数转换为一个范围。 如果这是你想要的,你将不得不创build一个function来做到这一点。

你可以创build一个转换器函数,也许标题为IntegerToRange ,采取一个整数,并经过一些逻辑(也许1 =“A1”,2 =“A2”或其他),将返回一个范围。 你的单元格公式将会是=cross_sum(IntegerToRange(word_value(A1))

或者,你可以修改你的word_value函数来返回一个范围,而不是一个整数。 你的单元格公式将会是=cross_sum(word_value(A1)