我有一個按鈕的形式,當我推它時,它打開另一個形式。當我關閉第二個表單時,我需要刷新第一個表單。形式轉換和數據刷新
因此,我需要在全局變量中插入第一個表單名稱以從第二個表單訪問表單名稱以刷新第一個表單。
我試圖創建此:
global formname as form
formname = activeform.name
,但我收到一條錯誤消息:該選項是隻讀的。
我有一個按鈕的形式,當我推它時,它打開另一個形式。當我關閉第二個表單時,我需要刷新第一個表單。形式轉換和數據刷新
因此,我需要在全局變量中插入第一個表單名稱以從第二個表單訪問表單名稱以刷新第一個表單。
我試圖創建此:
global formname as form
formname = activeform.name
,但我收到一條錯誤消息:該選項是隻讀的。
在Click
事件的按鈕上,您可以將該表格的名稱作爲OpenArgs
的屬性DoCmd.OpenForm
。
Private Sub Command4_Click()
DoCmd.OpenForm "frmStaff", , , , , , Me.Name
End Sub
在Close
事件的第二種形式,你可以檢查這個(字符串)值:
Private Sub Form_Close()
If Me.OpenArgs <> "" Then
'MsgBox Me.OpenArgs
Forms(Me.OpenArgs).Refresh 'or .Requery
End If
End Sub
你爲什麼不只是進入VBA代碼後面,配合緊密子刷新?我不明白,需要在表格之間傳遞一個全局變量 - 你應該能夠只是做這樣的事情在你的第二個形式:
Private Sub Form_Close()
Form_YourFormHere.Refresh
End Sub
如果必須使用了這種方法,這第一種形式的模塊:
Public formname as Form
Private Sub Command1_Click()
Set formname = Me
End Sub
或
Public formname as String
Private Sub Command1_Click()
formname = Me.name
End Sub
形式是對象類型,並且只能分配給使用一組語句的變量,否則VBA會認爲你正試圖assig n對象對變量的值。
你說你想要的形式名稱,但是你的變量是一個表單類型,而不是一個字符串。第一個代碼片段將實現出現要嘗試實現的結果,第二個代碼片段將實現您想要實現的結果。
不過,不同的方法可能會更好,更可靠。
這是什麼語言? – Blender
原標題說'訪問',所以我會去那,除非OP更正它。 – Joe
這是MS Access VBA。 –