如何在Excel VBA中捕获多页控件的页面退出事件

Exc*_*ers 2 excel vba

我在用户窗体上有一个多页控件。当用户导航到新页面时,我希望将当前页面上的数据保存到数据库中。用户可以通过各种方式在页面之间导航,我不想为所有这些页面编写一个过程。在选择新页面之前,是否有可以用来引用活动页面的事件?

我查看了多页控件的 Change 事件,但如果您在其中引用 multipage.selecteditem,它指的是新页面。我需要的是 BeforeChange 事件,但没有。

我还查看了 multipage.exit 事件,但它会在退出整个多页控件时触发,而不仅仅是一个页面。

有任何想法吗?

Dav*_*ens 5

使用MultiPage1_Change事件。

如果您为 Multipage 指定了一个名称,那么您可以将子例程从MultiPage1_Change(这是默认值)更改为YourMultiPageName_Change.

例如我有一个叫做“MultiPageBannerFilter”的。我使用这个子程序执行一些代码来捕获这个对象的 _Change 事件。

Private Sub MultiPageBannerFilter_Change()

MsgBox "You have changed pages!", vbInformation

End Sub
Run Code Online (Sandbox Code Playgroud)

只需将您的代码用于将信息保存到数据库而不是消息框,并确保事件子例程正确命名并且这应该可以工作。

修订

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
Run Code Online (Sandbox Code Playgroud)