簡體   English   中英

如何在Excel VBA中獲得子例程以返回某些內容?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM