Creating form programmatically in the module using vba

前端 未结 1 1063
广开言路
广开言路 2020-12-01 08:21

I want to create a user form in the module using VBA programmatically. I am a novice and inexperienced so I have tried couple of examples, but they are not fulfilling my req

相关标签:
1条回答
  • 2020-12-01 09:15

    After hardwork I have found a very simple answer to my question. May help you also.

    Sub CreateUserForm()
    Dim myForm As Object
    Dim NewFrame As MSForms.Frame
    Dim NewButton As MSForms.CommandButton
    'Dim NewComboBox As MSForms.ComboBox
    Dim NewListBox As MSForms.ListBox
    'Dim NewTextBox As MSForms.TextBox
    'Dim NewLabel As MSForms.Label
    'Dim NewOptionButton As MSForms.OptionButton
    'Dim NewCheckBox As MSForms.CheckBox
    Dim X As Integer
    Dim Line As Integer
    
    'This is to stop screen flashing while creating form
    Application.VBE.MainWindow.Visible = False
    
    Set myForm = ThisWorkbook.VBProject.VBComponents.Add(3)
    
    'Create the User Form
    With myForm
        .Properties("Caption") = "New Form"
        .Properties("Width") = 300
        .Properties("Height") = 270
    End With
    
    'Create ListBox
    Set NewListBox = myForm.designer.Controls.Add("Forms.listbox.1")
    With NewListBox
        .Name = "lst_1"
        .Top = 10
        .Left = 10
        .Width = 150
        .Height = 230
        .Font.Size = 8
        .Font.Name = "Tahoma"
        .BorderStyle = fmBorderStyleOpaque
        .SpecialEffect = fmSpecialEffectSunken
    End With
    
    'Create CommandButton Create
    Set NewButton = myForm.designer.Controls.Add("Forms.commandbutton.1")
    With NewButton
        .Name = "cmd_1"
        .Caption = "clickMe"
        .Accelerator = "M"
        .Top = 10
        .Left = 200
        .Width = 66
        .Height = 20
        .Font.Size = 8
        .Font.Name = "Tahoma"
        .BackStyle = fmBackStyleOpaque
    End With
    
    'add code for listBox
    lstBoxData = "Data 1,Data 2,Data 3,Data 4"
    myForm.codemodule.insertlines 1, "Private Sub UserForm_Initialize()"
    myForm.codemodule.insertlines 2, "   me.lst_1.addItem ""Data 1"" "
    myForm.codemodule.insertlines 3, "   me.lst_1.addItem ""Data 2"" "
    myForm.codemodule.insertlines 4, "   me.lst_1.addItem ""Data 3"" "
    myForm.codemodule.insertlines 5, "End Sub"
    
    'add code for Comand Button
    myForm.codemodule.insertlines 6, "Private Sub cmd_1_Click()"
    myForm.codemodule.insertlines 7, "   If me.lst_1.text <>"""" Then"
    myForm.codemodule.insertlines 8, "      msgbox (""You selected item: "" & me.lst_1.text )"
    myForm.codemodule.insertlines 9, "   End If"
    myForm.codemodule.insertlines 10, "End Sub"
    'Show the form
    VBA.UserForms.Add(myForm.Name).Show
    
    'Delete the form (Optional)
    'ThisWorkbook.VBProject.VBComponents.Remove myForm
    End Sub
    
    0 讨论(0)
提交回复
热议问题