Forms VisualBasic Script

Sub MakeForm()
    Dim TempForm As Object
    Dim NewButton As Msforms.CommandButton
    Dim Line As Integer
    Application.VBE.MainWindow.Visible = False
    Set TempForm = ThisWorkbook.VBProject. _
      VBComponents.Add(3) 'vbext_ct_MSForm
    With TempForm
        .Properties("Caption") = "Form"
        .Properties("Width") = 200
        .Properties("Height") = 100
    End With
    Set NewButton = TempForm.Designer.Controls _
      .Add("forms.CommandButton.1")
    With NewButton
        .Caption = "Click Me"
        .Left = 60
        .Top = 40
    End With
    With TempForm.CodeModule
        Line = .CountOfLines
        .InsertLines Line + 1, "Sub CommandButton1_Click()"
        .InsertLines Line + 2, "  MsgBox ""Hello!"""
        .InsertLines Line + 3, "  Unload Me"
        .InsertLines Line + 4, "End Sub"
    End With
    VBA.UserForms.Add(TempForm.name).Show
    ThisWorkbook.VBProject.VBComponents.Remove TempForm
End Sub