2017-04-05 11 views
0

런타임에 작성된 명령 단추에 대한 코드를 작성하려고합니다. 명령 단추는 동적 입력을 기반으로 작성됩니다. 나는 문제는, 내가 몇 가지 명령 단추가 런타임에 만든이 코드는 하나의 명령 단추에 사용되는 여기런타임에 생성 된 명령 단추에 대한 코드를 할당하는 방법은 무엇입니까?

Assign code to a button created dynamically

해결책을 발견했다. 이것은 내 코드입니다.

For i = 1 To RevCounter 

Set ctlTXT = Me.Controls.Add("Forms.CommandButton.1") 
ctlTXT.name = "Rev" & i 
ctlTXT.Caption = Sheet4.Range("D" & i + 5).value 
ctlTXT.Left = 18 
ctlTXT.Height = 18: ctlTXT.Width = 72 
ctlTXT.Top = 15 + ((i - 1) * 25) 

Next 

질문은 런타임에 생성 된 명령 단추에 대한 코드를 할당하는 방법입니다. 예를 들어, RevCount = 5이면 런타임에 5 개의 명령 단추가 작성됩니다. 내가 만든 각 명령 단추에 대한 코드를 할당해야합니다.

  • sub buttonname_click() 형식

당신은 처음이를 사용하여 관련 코드를 추가 시트에 버튼을 추가

+0

무엇이 궁금한가요? 여러 개의'Sub' 코드를'CommandButton'의 배열에 할당하는 방법을 알고 싶습니까? 원하는 값 목록은 어디에 있습니까? –

+0

@ShaiRado 런타임에 생성 된 각 명령 단추의 코드를 지정하고 싶습니다. RevCounter = 5이면 5 개의 명령 단추가 만들어지고 5 개의 코드가 필요합니다. –

+0

[ctlTXT.OnAction = "nameOfMacroToRun"] (http://stackoverflow.com/a/2783413/1153513)를 사용해 보셨습니까? – Ralph

답변

0

사용하려는 과정은에있다 그래서 우리는 여기서 두 번째를 다룰 것입니다. 코드는 관련 워크 시트의 코드 모듈에 추가해야합니다. 그래서이 코드는 활성 시트의 코드 모듈에 코드를 추가합니다. 이는 필요한 것입니다.

Sub addcode() 
    Dim subtext As String 
    subtext = "Sub PrintStuff" & vbCrLf & "msgbox ""Hello World""" & vbCrLf & "End Sub" 
    With Workbooks(ThisWorkbook.Name).VBProject.VBComponents(ActiveSheet.CodeName).CodeModule 
     .InsertLines .CountOfLines + 1, subtext 
    End With 
End Sub 

이 확장 성을 만들기에는 충분한 정보가 없습니다. 버튼에 무엇을할까요? 추가하려는 하위 항목을 추가 할 수 있습니까?

+0

명령 단추는 사용자 양식에, 내가 뭘하고 싶은가, 사용자가 만든 버튼을 클릭하면 클릭 한 버튼에 대한 올바른 정보와 함께 다른 양식을 보여줍니다 –