반응형
vba를 사용하여 모듈에서 프로그래밍 방식으로 양식 만들기
저는 VBA를 프로그래밍 방식으로 사용하여 모듈에 사용자 양식을 만들고 싶습니다.저는 초보자이고 경험이 부족하여 몇 가지 예를 들어 보았지만, 제 요구 사항을 충족하지 못하고 있습니다.
나는 단지 매크로를 원합니다.
- VBA를 사용하여 모듈 내에 사용자 양식을 만듭니다.
- 일부 데이터가 포함된 ListBox가 있습니다.
- 수신기가 있는 명령 단추 있음
여기 제가 사용한 코드가 있습니다.
Option Explicit
Sub MakeuserForm()
'Dim CommandButton1 As MsForms.CommandBarButton
'Dim ListBox1 As MsForms.ListBox
Dim UserForm1 As VBComponent
Set UserForm1 = ActiveWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
With UserForm1
.Properties("Height") = 100
.Properties("Width") = 200
On Error Resume Next
.Name = "My Form"
.Properties("Caption") = "This is your user form"
End With
ShowForm
End Sub
Sub ShowForm()
NewForm.Show
End Sub
이제 ListBox 및 버튼을 청취자가 있는 양식에 추가하는 방법을 모르겠습니다.
열심히 일한 후에 저는 제 질문에 대한 아주 간단한 답을 찾았습니다.당신에게도 도움이 될 것입니다.
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
언급URL : https://stackoverflow.com/questions/11519345/creating-form-programmatically-in-the-module-using-vba
반응형
'programing' 카테고리의 다른 글
Firebase 앱에서 클라우드 스토리지의 모든 파일 목록을 가져오는 방법은 무엇입니까? (0) | 2023.06.11 |
---|---|
유형 스크립트: 구성원에 대한 밑줄 규칙 (0) | 2023.06.11 |
typescript에서 node-config를 사용하는 방법은 무엇입니까? (0) | 2023.06.11 |
vuex '상수' 명명된 작업을 변수와 함께 참조하려면 어떻게 해야 합니까? (0) | 2023.06.11 |
jQuery에서 일치하는 요소의 요소 유형을 확인하려면 어떻게 해야 합니까? (0) | 2023.06.11 |