[英]How do I call a function inside another function in 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
我想這是一個錯誤,因為我無法在第二個功能中使用第一個功能。 有沒有辦法解決這個問題?
您的功能沒有傳遞任何東西。
您可能希望在第一個函數中將Col_Letter更改為myFirstFunction。
同樣在第二個函數中,將65536更改為rows.count。
然后它將在這里錯誤:
Some_Column = Range("B4").Address
更改為此:
Set Some_Column = Range("B4")
這是因為它被定義為一個范圍,因此您不能在其中傳遞地址(它是字符串),而在其中傳遞對象(必須使用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
Dim Some_Column As Range
將變量聲明為引用類型,這意味着您需要通過聲明Set Some_Column = ...
對象的引用,並最好在Set Some_Column = Nothing
最后釋放它。 .Address
返回一個String
而不是一個對象,因此應將您的代碼Set Some_Column = Range("B4")
以將Some_Column設置為Range。 在第一個函數中還有一個錯誤,即Col_Letter = vArr(0)
可能是myFirstFunction = vArr(0)
,或者myFirstFunction = vArr(0)
。 此行設置函數的返回值function_name = ...
您從該問題復制了解決方案,但是如果您更改函數名稱,則必須在整個過程中進行更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.