检测按钮在Excel工作表多页表单上按事件(不是VBA多页)

时间:2018-05-04 21:54:25

标签: excel vba excel-vba button multipage

我正在努力弄清楚如何在直接位于Excel工作表上的MultiPage表单上检测按钮按下事件。换句话说,表单不是使用VBA生成的,而是直接在工作表上构建。

我希望语法类似于:

Private Sub MultiPage1_Frame1_CommandButton1_Click()
    Do Stuff
End Sub

然而,这并不起作用,因为我认为我还需要在MultiPage中指定页面。例如,可以通过以下方式访问同一表单上的文本框:

MultiPage1.Pages(0).Frame1.TextBox1.Text = "Some Text"

不幸的是,

Private Sub MultiPage1_Pages(0)_Frame1_CommandButton1_Click()

给出一个编译错误:预期:选中零(0)的标识符。

那么,我该如何转换

MultiPage1.Pages(0).Frame1.CommandButton1 

到将检测按钮按下事件的子名称?

谢谢!

2 个答案:

答案 0 :(得分:0)

我不确定,但我认为你可能偶然发现了一个错误。

More Controls 下有一个Microsoft Forms 2.0控件,但我很确定它只适用于UserForms。

我尝试将其添加到工作表中并收到错误消息。但是,一旦我将一个添加到UserForm并返回到工作表,我就可以添加它...但是事情有点“毛病”,当我打开bod的属性对话框时,字体渲染效果不佳。

我查看的所有文档(例如thisthisthis)仅包含在UserForm或Outlook中使用的示例。

有许多类型的ActiveX控件,并非所有控件都可以在任何地方使用。作为Excel中的经验法则,最好坚持使用内置的控件。

另外,来自另一个论坛:

  

:我似乎无法在工作表中找到并添加多页控件。   如何将多页控件添加到Excel工作表?

     

A :除非您首先将其放在UserForm上,否则无法在工作表上显示它。 UserForm为VBA提供用户界面。 MultiPagecontrol旨在使用此用户界面,而不是Excel工作表。使用UserForm显示MutliPage控件是否有问题? 来源:Leith Ross

img

这个证据合起来告诉我,即使你可以让它工作, 你也不应该。没有预测它会如何表现。

如果您决定在UserForm上使用MultiPage,请注意,在上面的示例中,MultiPage1控件的名称;那并不是指“第1页”。控件作为一个整体有一个Click事件,该事件并非特定于页面:

Private Sub MultiPage1_Click(ByVal Index As Long)

为了完整起见,我将粘贴一个完整的代码示例,但是再次:对于基于工作表的控件,这是不推荐

如何:访问MultiPage控件中的页面

以下示例以多种方式访问​​ MultiPage 的单个页面:

  • 将Pages集合与数字索引一起使用。

  • 使用MultiPage中单个页面的名称。

  • 使用SelectedItem属性。

要使用此示例,请将此示例代码复制到表单脚本编辑器。确保表单包含名为MultiPage1 MultiPage 和名为CommandButton1 CommandButton

Sub CommandButton1_Click()
    Dim PageName
    Set MultiPage1 = Item.GetInspector.ModifiedFormPages("P.2").MultiPage1

    For i = 0 To MultiPage1.Count - 1
        'Use index (numeric or string)
        MsgBox "MultiPage1.Pages(i).Caption = " & MultiPage1.Pages(i).Caption
        MsgBox "MultiPage1.Pages.Item(i).Caption = " & _
            MultiPage1.Pages.Item(i).Caption

        'Use Page object without referring to Pages collection
        If i = 0 Then
            MsgBox "MultiPage1.Page1.Caption = " & MultiPage1.Page1.Caption
        ElseIf i = 1 Then
            MsgBox "MultiPage1.Page2.Caption = " & MultiPage1.Page2.Caption
        End If

        'Use SelectedItem Property
        MultiPage1.Value = i
        MsgBox "MultiPage1.SelectedItem.Caption = " & _
            MultiPage1.SelectedItem.Caption
    Next
End Sub

Source

现在我要删除那个错误的工作表并 重新启动 ;我建议你这样做!

答案 1 :(得分:0)

MrExcel.com上的Mikerickson和Jaafar Tribak发现了这一点:

https://www.mrexcel.com/forum/excel-questions/1054446-detect-button-press-event-excel-sheet-multipage-form-not-vba-userform-multipage-2.html

非常感谢他们两人!