[英]how to get a subroutine in excel vba to return something?
我在excel vba中有以下代碼:
Sub main()
Call Get_Rows_Generic("usersFullOutput.csv", 1)
End Sub
在另一個模塊中,我有:
Sub Get_Rows_Generic(work_sheet As String, column_num As Integer)
Dim wsUsers As Worksheet: Set wsUsers = Worksheets(work_sheet)
Dim userRows As Integer: userRows = wsUsers.Cells(Rows.Count, column_num).End(xlUp).Row
MsgBox userRows
End Sub
我如何訪問子Get_Rows_Generic
的子Get_Rows_Generic
(在MsgBox
)的結果? 即將結果輸入另一個子或單元格...等等。
那么為什么不僅僅使其具有功能呢?
Function Get_Rows_Generic(work_sheet As String, column_num As Integer)
Dim wsUsers As Worksheet: Set wsUsers = Worksheets(work_sheet)
Dim userRows As Integer: userRows = wsUsers.Cells(Rows.Count, column_num).End(xlUp).Row
Get_Rows_Generic = userRows
End Sub
那你的電話可能是
Sub main()
Dim result as integer
result = Get_Rows_Generic("usersFullOutput.csv", 1)
End Sub
如果您希望result
是全局變量,那么我將向您提出以下問題: 如何在VBA中聲明全局變量?
Public result as integer
假設您知道可以將Sub轉換為Function,則有一種粗略的方法可以實現您要執行的操作。 由於VBA / VBScript默認將參數作為ByRef
,您可以使用它來“返回”一個值。
Sub main()
Dim userRows as Integer
userRows = 0
Call Get_Rows_Generic("usersFullOutput.csv", 1, userRows)
Msgbox userRows
End Sub
Sub Get_Rows_Generic(work_sheet As String, column_num As Integer, ByRef userRows as Integer)
Dim wsUsers As Worksheet: Set wsUsers = Worksheets(work_sheet)
Dim userRows As Integer: userRows = wsUsers.Cells(Rows.Count, column_num).End(xlUp).Row
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.