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/

編集:

残念ながら、ユーザーフォームのVBAMultiPageではなくワークシートを意味していると思いました。

これをチェックしてください。私は私のためにこの仕事をすることができました:

動的に作成されたボタンにコードを割り当てる

クラス1:

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

これは、カスタムクラスを使用して行うことができます。クラスには基本的に1人のメンバーがい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 に答える