如何在VBA的另一个函数中调用一个函数?

我有一个看起来像这样的函数1:

Function myFirstFunction(lngCol As Long) As String Dim vArr vArr = Split(Cells(1, lngCol).Address(True, False), "$") Col_Letter = vArr(0) End Function 

我需要在这样一个单独的函数中调用这个函数:

 Function myOtherFunction(myVar as Variant) As Variant Dim Some_Column As Range Some_Column = Range("B4").Address If Range((myFirstFunction(Some_Column.Column) & 65536)).End(xlUp) <> Range(myFirstFunction(Some_Column.Column) & 1) Then ...some code End If 

它给了我一个错误,我会假设,因为我不能使用第二个函数中的第一个函数。 有没有办法来解决这个问题?

你的function没有传回任何东西。

您可能想要在第一个函数中将Col_Letter更改为myFirstFunction。

另外在第二个函数中将65536更改为rows.count。

它会在这里错误:

 Some_Column = Range("B4").Address 

将其更改为:

 Set Some_Column = Range("B4") 

这是因为它被定义为一个范围,所以你不能传递地址(这是一个string),你传递的对象(你必须使用Set)

之后应该都很好。

 Function myFirstFunction(lngCol As Long) As String Dim vArr vArr = Split(Cells(1, lngCol).Address(True, False), "$") myFirstFunction = vArr(0) End Function Function myOtherFunction(myVar As Variant) As Variant Dim Some_Column As Range Set Some_Column = Range("B4") If Range((myFirstFunction(Some_Column.Column) & rows.count)).End(xlUp) <> Range(myFirstFunction(Some_Column.Column) & 1) Then '...some code End If End Function 

有问题的部分是Some_Column = Range("B4").Address

  1. Dim Some_Column As Range将variables声明为引用types,这意味着您需要通过指定Set Some_Column = ...来设置它的引用,最好使用Set Some_Column = Nothing释放它。
  2. .Address返回一个String而不是一个对象,所以你的代码应该是Set Some_Column = Range("B4")来设置Some_Column为一个范围。

Col_Letter = vArr(0)应该可能是myFirstFunction = vArr(0)的第一个函数中还有一个额外的错误,或者相反。 这一行设置函数的返回值, function_name = ...

您从这个问题中复制了解决scheme,但是如果您更改函数名称,则必须彻底更改它。