2

我有一个多页,我成功地将作为我的参考页面的第一页的元素复制到动态创建的新页面。

我的问题是,如何在多页控件的页面内设置命令按钮的操作?我的目标是单击任何页面上的按钮,然后弹出另一个表单。

我该怎么做呢?从 Android 调整到 VB 非常困难。我真的很感谢你们的帮助。

这是我克隆页面的代码。

i = 0
MultiPage1.Pages.Add
MultiPage1.Pages(i).Controls.Copy
i = i + 1
MultiPage1.Pages(i).Paste
For Each ctl In Me.MultiPage1.Pages(i).Controls
     If TypeOf ctl Is MSForms.Label Then
           '~~~ code omitted
           Select Case ctl.Tag
                Case "startTime"
                        ctl.Caption = "4:00pm"
           End Select
     End If
Next

这就是它的样子。 在此处输入图像描述

该按钮将连接页面内的所有字符串。连接的字符串将显示在另一个用户窗体上。

4

2 回答 2

2

您可能最好在功能区中创建一个按钮,以便它在所有页面上都可用:

http://chandoo.org/wp/2012/02/27/how-to-add-your-own-macros-to-excel-ribbon/

编辑:

我的错,我以为您的意思是用户表单中的工作表而不是 VBA MultiPage。

看一下这个。我能够为我完成这项工作:

将代码分配给动态创建的按钮

第一类:

Option Explicit

Public WithEvents CmdEvents As MSForms.CommandButton

Private Sub CmdEvents_Click()
    MsgBox "yo"
End Sub

具有 MultiPage 对象的用户窗体:

Option Explicit

Dim cmdArray() As New Class1

Private Sub CommandButton1_Click()
    Dim newControl As Control

    Set newControl = Me.MultiPage1.Pages(0).Controls.Add("Forms.CommandButton.1", "NewCommand", True)

    newControl.Object.Caption = "hello"


    newControl.Left = 50
    newControl.Top = 50

    ReDim Preserve cmdArray(1 To 1)
    Set cmdArray(1).CmdEvents = newControl

    Set newControl = Nothing
End Sub
于 2013-03-04T03:53:06.707 回答
0

您可以使用自定义类来做到这一点。班级基本上只有一名成员Public WithEvents b as CommandButton

诀窍是WithEvents关键字。您现在可以插入一些代码来一般处理分配给此类的按钮的单击:

Private Sub b_Click()
    MsgBox "You clicked " & b.Name 'Modify this event so that different code is executed base on the page/name/etc.
End Sub

为了完成这项工作,您需要将您在代码中创建的按钮分配给这个新类的对象:

Private objButtonHandler as New MyClass 'this should be scope a UserForm wide

Sub YourSub
    Dim objYourButton as CommandButton
    Set objYourButton = ... `your code here
    Set objButtonHandler.b = objYourButton
End Sub
于 2013-03-04T14:36:03.477 回答