1

2 つのコマンド ボタンを持つコードに取り組んでいます。

1) ユーザー入力

2) 実行する

USER INPUT ボタンをクリックすると、UserForm が表示されます。UserForm の入力に基づいて、ワークシートの形式が調整され、ユーザーは指示に従ってワークシートにデータを入力します。[実行] ボタンは、計算を実行し、シートの残りの部分を埋めてから、結果をグラフ化するか、同じ 2 つのボタンを含む新しいシートを開きます。

新しいシートを作成することはできますが、シートにはコマンド ボタンが 1 つしか含まれていません。私のコードは以下の通りです:

Dim obj As Object
Dim Code As String
Dim obj2 As Object
Dim code2 As String

    With Sec_Delay

        Set obj = .OLEObjects.Add(classType:="Forms.CommandButton.1", _
                                Link:=False, DisplayAsIcon:=False, Left:=279, _
                                Top:=210.75, Width:=109.5, Height:=24)
        obj.Name = "ButtonTest"
        obj.Object.Caption = "USER INPUT"

        Code = "Sub ButtonTest_Click()" & vbCrLf & _
            "UF_input.Show" & vbCrLf & _
            "End Sub"

        Set obj2 = .OLEObjects.Add(classType:="Forms.CommandButton.2", _
                                Link:=False, DisplayAsIcon:=False, Left:=277.5, _
                                Top:=236.25, Width:=111, Height:=24)
        obj2.Name = "Execute2Test"
        obj2.Object.Caption = "Execute"

        code2 = "Sub Execute2Test_Click()" & vbCrLf & _
                "Cells(8,1) = 1" & vbCrLf & _
                "End Sub"

        With .Parent.VBProject.VBComponents(.CodeName).CodeModule
            .insertlines .CountOfLines + 1, Code
        End With
    End With

このコードは、新しいシートを作成するサブ内にあります。新しいシートは「Sec_Delay」と呼ばれ、コマンド ボタンが 1 つしかありません。最初のコマンド ボタンのコードは、stackoverflow の別の場所から持ち上げたので、最後の部分が何をするのかよくわかりません。

    With .Parent.VBProject.VBComponents(.CodeName).CodeModule
        .insertlines .CountOfLines + 1, Code
    End With

しかし、OLEObject がどのように機能するかはほとんど理解しています。新しいシートに 2 つ目のコマンド ボタンを作成する方法がわかりません。

2 つ目のコマンド ボタンを作成するにはどうすればよいですか? 「Forms.CommandButton.2」が何もしないのはなぜですか? とにかく、「.1」はどういう意味ですか? 同じサブに 2 つの OLEObject を持つことは可能ですか?

4

1 に答える 1