동적으로 작성된 단추에 코드 할당
Excel 사용자 양식에 동적으로 만든 단추를 가져와 매크로를 실행하려고 합니다.transfer
내가 쓴 것.Module 1
내 프로젝트의 "모듈" 섹션에 있습니다.
아래에 지금까지 작성한 코드를 실제로 생성할 수 있는 사용자 양식에 붙여넣었습니다.Transfer to Sheet
프레임의 버튼(동적으로 생성하기도 했습니다) 하지만 어떤 이유로 VBA를 실행하면438 error
라는 메시지Object doesn't support this property or method
.
제가 이 문제를 해결할 수 있는 방법을 알려주실 수 있나요?
코드는 다음과 같습니다.
Dim framecontrol1 As Control
Set workitemframe = Controls.Add("Forms.Frame.1")
With workitemframe
.Width = 400
.Height = 400
.Top = 160
.Left = 2
.ZOrder (1)
.Visible = True
End With
workitemframe.Caption = "Test"
Set framecontrol1 = workitemframe.Controls.Add("Forms.commandbutton.1")
With framecontrol1
.Width = 100
.Top = 70
.Left = 10
.ZOrder (1)
.Visible = True
.Caption = "Transfer to Sheet"
End With
framecontrol1.OnAction = "transfer"
여기 예가 있습니다.당신의 필요에 맞게 수정해주세요 :)
이 예에서는 명령 단추를 만들고 이 단추에 코드를 할당하여 이 단추를 누르면 "Hello World"가 표시됩니다.
새 명령 단추를 동적으로 만들고 코드를 할당하는 명령 단추의 클릭 이벤트에 이 코드를 붙여넣습니다.
Option Explicit
Dim cmdArray() As New Class1
Private Sub CommandButton1_Click()
Dim ctl_Command As Control
Dim i As Long
i = 1
Set ctl_Command = Me.Controls.Add("Forms.CommandButton.1", "CmdXYZ" & i, False)
With ctl_Command
.Left = 100
.Top = 100
.Width = 255
.Caption = "Click Me " & CStr(i)
.Visible = True
End With
ReDim Preserve cmdArray(1 To i)
Set cmdArray(i).CmdEvents = ctl_Command
Set ctl_Command = Nothing
End Sub
클래스 모듈에 이 코드를 붙여넣습니다.
Option Explicit
Public WithEvents CmdEvents As MSForms.CommandButton
Private Sub CmdEvents_Click()
MsgBox "Hello Word"
End Sub
스냅샷
코드를 사용자 양식에 프로그래밍 방식으로 추가해야 합니다.나는 이 vbax 기사의 코드를 참조로 사용했습니다.
아래 코드:
- 일반 모듈에서 실행됩니다.
- UserForm1이라는 사용자 양식에 단추를 추가합니다.
클릭 이벤트의 사용자 양식에 이 코드를 추가합니다.
Private Sub CommandButton1_Click() Call Transfer End Sub
정상 모듈로부터 VBA
Sub AddToForm()
Dim UF As Object
Dim frameCOntrol1 As Object
Set UF = ActiveWorkbook.VBProject.VBComponents("UserForm1")
Set frameCOntrol1 = UF.designer.Controls.Add("Forms.CommandButton.1")
With frameCOntrol1
.Width = 100
.Top = 70
.Left = 10
.ZOrder (1)
.Visible = True
.Caption = "Transfer to Sheet"
End With
With UF.CodeModule
.InsertLines 2, _
"Private Sub " & frameCOntrol1.Name & "_Click()" & Chr(13) & _
"Call Transfer" & Chr(13) & _
"End Sub"
End With
End Sub
언급URL : https://stackoverflow.com/questions/10224511/assign-code-to-a-button-created-dynamically
'programing' 카테고리의 다른 글
vuex 스토어 토큰이 구성 요소 간에 업데이트되지 않음 (0) | 2023.06.09 |
---|---|
오류: 참조 또는 변수에 할당할 수 없습니다!앵귤러 4 (0) | 2023.06.09 |
NLog 메시지를 Visual Studio의 출력 창으로 출력하려면 어떻게 해야 합니까? (0) | 2023.06.09 |
Wordpress 무한 스크롤로 제품을 로드한 후 Woocommerce 스크립트를 다시 초기화합니다. (0) | 2023.06.09 |
중력 양식 이미지 업로드 미리 보기 (0) | 2023.06.09 |