gpt4 book ai didi

vba - 检测 Excel 工作表多页表单(不是 VBA 多页)上的按钮按下事件

转载 作者:行者123 更新时间:2023-12-04 20:10:33 26 4
gpt4 key购买 nike

我正在努力弄清楚如何检测直接位于 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 

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

谢谢!

最佳答案

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

更多控件下有一个 Microsoft Forms 2.0 控件,但我很确定它仅适用于用户窗体。

我尝试将其添加到工作表并出现错误。但是,一旦我将一个添加到用户窗体并返回到工作表,我就能够添加它......但是事情暂时变得“小故障”,当我打开正文的“属性”对话框时,字体呈现不佳.

我查看的所有文档(如 thisthisthis )只有在用户窗体或 Outlook 中使用它的示例。

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

另外,来自另一个论坛:

Q: It seems that I could not find and add Multipage control into worksheet. How to add a Multipage control to Excel worksheet?

A: Unless you put it on a UserForm first, you can't display it on a Worksheet. The UserForm provides the user interface to VBA. The MultiPagecontrol is designed to work with this user interface, and not the Excel Worksheet. Is there a problem using the UserForm to display the MutliPage control? Source: Leith Ross



img

这些证据结合起来告诉我,即使你能让它发挥作用, 你不应该 .无法预测它将如何表现。

如果您决定在用户​​窗体上使用 MultiPage,请注意在上面的示例中, MultiPage1 的名称控制 ;这不是指“第1页”。该控件作为一个整体具有 Click不特定于页面的事件:
Private Sub MultiPage1_Click(ByVal Index As Long)

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

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

以下示例以多种方式访问​​ MultiPage 的单个页面:
  • 使用带有数字索引的 Pages 集合。
  • 使用 MultiPage 中单个页面的名称。
  • 使用 SelectedItem 属性。

  • 要使用此示例,请将此示例代码复制到 的脚本编辑器中。表格 .确保 表格 包含 多页 命名为 MultiPage1命令按钮 命名为 CommandButton1 .
    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)

    现在我要删除那个有问题的工作表和 重启 ;我建议你也这样做!

    关于vba - 检测 Excel 工作表多页表单(不是 VBA 多页)上的按钮按下事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50183538/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com