使用VBA程式開啟表單時,我們可以使用「DoCmd.OpenForm」的語法進行,這個語法中,有個「OpenArgs」(開啟參數)可以使用,我們可以從原始表單開啟另一表單時,將一字串傳送到另一表單中,以便開啟時,使用VBA來處理呈現畫面,這個布份筆者覺得非常有用,但是傳遞唯一串文字,如果要多筆參數傳遞,就要把這些參數組合成一個字串,然後到另一表單時,再解開使用,解開的部份,我撰寫了一個子程式使用,以便於程式開發。
以下為拆解字串取得指定項目的子程式:
Function GetSplitValue(strValue As String, strDelimiter As String, ItemNumber As Integer) As String
'取得字串由指定字元切割後的第幾個項目的字串值
tmp = Split(strValue, strDelimiter)
GetSplitValue = tmp(ItemNumber)
End Function
我用兩個表單(F_Day19_1、F_Day19_2)來講解,第一個表單(F_Day19_1)有三個文字方框(Text_1、Text_2、Text_3),一個指令方塊(cmd_OpenOtherForm):
該指令方塊的Click事件:
Private Sub cmd_OpenOtherForm_Click()
strOpenArgs = Text_1 & "|" & Text_2 & "|" & Text_3
DoCmd.OpenForm "F_Day19_2", acNormal, , , , acDialog, strOpenArgs
End Sub
第二個表單(F_Day19_2)只有一個文字方塊,用來顯示訊息:
當此表單開啟時,執行以下程式拆解OpenArgs參數:
Private Sub Form_Load()
Dim strOpenArgs As String
'如果有OpenArgs參數
If IsNull(Me.OpenArgs) = False Then
strOpenArgs = Me.OpenArgs
strText1 = GetSplitValue(strOpenArgs, "|", 0)
strText2 = GetSplitValue(strOpenArgs, "|", 1)
strText3 = GetSplitValue(strOpenArgs, "|", 2)
Text_Msg = "原始參數:" & strOpenArgs & vbCrLf
Text_Msg = Text_Msg & "參數1:" & strText1 & vbCrLf
Text_Msg = Text_Msg & "參數2:" & strText2 & vbCrLf
Text_Msg = Text_Msg & "參數3:" & strText3 & vbCrLf
End If
End Sub
當由第一個表單,點選「開啟另一按鈕」後,就會看到,由GetSplitValue取出的參數值:
以此方式,可省略掉一些程式碼的撰寫,效率可能不會太好,但可節省一些開發時間。
以上介紹,希望對各位有幫助。