2017-04-05 4 views
0

実行時に作成されたコマンドボタンのコードを作成しようとしています。コマンドボタンは動的入力に基づいて作成されます。私はこの問題は、唯一、私はいくつかのコマンドボタンが実行時に作成したこのコードは1つのコマンドボタンに使用されている、ここで実行時に作成されたコマンドボタンのコードを割り当てる方法は?

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

あなたの質問は何ですか? 'CommandButton'の配列に複数の' Sub'コードを割り当てる方法を知りたいですか?あなたが望む値のリストはどこですか? –

+0

@ShaiRado実行時に作成された各コマンドボタンのコードを割り当てたいと思います。 RevCounter = 5の場合、5つのコマンドボタンが作成され、5つのコードが必要になります。 –

+0

[ctlTXT.OnAction = "nameOfMacroToRun"](http://stackoverflow.com/a/2783413/1153513)を試しましたか? – Ralph

答えて

0

使用するプロセスがにあります私たちはここで2番目に対処します。コードは、関連するワークシートのコードモジュールに追加する必要があります。このコードはアクティブシートのコードモジュールにコードを追加します。これはおそらく必要なものです。

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

コマンドボタンはユーザーフォームにあります、私は何をしたいですか、ユーザーが作成されたボタンをクリックすると、クリックされたボタンの正しい情報を持つ別のフォームが表示されます –

関連する問題