2013-03-21 28 views
2

我在用戶窗體上有多頁控件。當用戶導航到新頁面時,我希望將當前頁面上的數據保存到數據庫中。用戶可以以各種方式在頁面之間導航,我不想爲它們編寫一個過程。在選擇新頁面之前是否有可用於引用活動頁面的事件?如何在Excel VBA中捕捉多頁控件的頁面退出事件

我已經看過多頁控件的Change事件,但如果引用multipage.selecteditem在那裏它指的是新的一頁。我需要的是一個BeforeChange事件,但沒有一個。

我也看了看multipage.exit事件,但是當整個多頁控制退出,而不僅僅是一個網頁觸發。

任何想法?

回答

4

使用MultiPage1_Change事件。

如果您已爲您的Multipage分配了一個名稱,那麼您可以將子例程從MultiPage1_Change(這是默認設置)更改爲YourMultiPageName_Change

,比如我有一個被稱爲「MultiPageBannerFilter」。我使用這個子程序執行一些代碼來捕獲這個對象的_Change事件。

Private Sub MultiPageBannerFilter_Change() 

MsgBox "You have changed pages!", vbInformation 

End Sub 

只要把你的代碼來保存信息到數據庫,而不是消息框,並確保該事件子程序被正確命名,這應該工作。如果有一個頁面

修訂

Public previousPage As String 


Sub UserForm_Activate() 
    previousPage = MultiPage1.SelectedItem.Name 

End Sub 

Private Sub MultiPage1_Change() 

Dim currentPage As String 
currentPage = MultiPage1.SelectedItem.Name 

If Not currentPage = previousPage Then 
    previousPage = currentPage 
    ' 
    ' 
    MsgBox "Your Code Goes Here!", vbInformation 
    ' 
    ' 
End If 



End Sub 
+0

我不認爲你已經正確讀出我的問題。 – 2013-03-21 17:09:45

+0

我不認爲你知道如何將這個答案應用於你的問題。您可以聲明一些公共變量來存儲哪些頁面處於活動狀態,並以這種方式檢測更改。但無論如何,它都需要使用'MultiPage_Change'事件來處理。見上面的修訂版。 – 2013-03-21 17:21:45

+0

@ aardvark123你有機會嘗試修訂嗎? – 2013-03-22 12:03:38

-1

MultiPage1_Change事件只被解僱。因此,沒有必要檢測改變,並使用公共變量「|上一頁」

私人小組MultiPage1_Change() 當前是暗淡作爲字符串 當前頁= MultiPage1.SelectedItem.Name MSGBOX當前頁&「選擇!」,vbInformation 結束小組

0

我有一個類似的挑戰,並與下面的代碼上來。您必須跟蹤您正在使用哪個頁面並使用Click事件。因此,將「多頁」設置爲「初始化」子頁中的一個頁面,並將intPrevPage設置爲相應的數字。

Private Sub MultiPage1_Click(ByVal Index As Long) 
    Select Case True 
' If the click doesn't change the Page, then do nothing 
     Case intPrevPage = MultiPage1.Value 
' ValidForm is a function that validates data on previous 
' Page if click changed the Page 
     Case ValidForm 
' If TRUE then capture current Page 
      intPrevPage = MultiPage1.Value 
      Call FormatPage 
' If FALSE then return to previous Page 
     Case Else 
      MultiPage1.Value = intPrevPage 
    End Select 
End Sub