Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7135 / 13646 ツリー ←次へ | 前へ→

【40987】ユーザーフォームで追加したボタンにマクロを割り当て... sin 06/7/27(木) 12:58 質問[未読]
【40990】Re:ユーザーフォームで追加したボタンにマクロを割り当... ichinose 06/7/27(木) 13:34 発言[未読]
【41001】Re:ユーザーフォームで追加したボタンにマクロを割り... sin 06/7/27(木) 15:49 お礼[未読]
【41017】Re:ユーザーフォームで追加したボタンにマクロを割り... sin 06/7/27(木) 18:35 お礼[未読]
【40991】Re:ユーザーフォームで追加したボタンにマクロを割り当... 角田 06/7/27(木) 13:48 発言[未読]
【41003】Re:ユーザーフォームで追加したボタンにマクロを割り... sin 06/7/27(木) 15:53 お礼[未読]

【40987】ユーザーフォームで追加したボタンにマクロを割り当て...
質問  sin  - 06/7/27(木) 12:58 -

引用なし
パスワード
   いつもお世話になっています。
ユーザーフォームの中にフレームを置き、
検索結果を表示させたく、下記のようにテストしていたのですが、
追加したボタンにマクロを割り当てる方法が分かりません。
「OnAction」は使えないのでしょうか?
(下記テストでは20個ですが、実際には不定です)
よろしくお願いします。


Private Sub CommandButton1_Click()
  Dim i As Long
  Dim txtb As Object
  Dim cmdb As Object
  
  For i = 0 To 19
    
    Set txtb = Frame1.Controls.Add("Forms.TextBox.1", "testt" & i, True)
    With txtb
      .Top = 5 + i * 20
      .Left = 5
      .Height = 18
      .Width = 100
    End With
    
    Set cmdb = Frame1.Controls.Add("Forms.CommandButton.1", "testc" & i, True)
    With cmdb
      .Top = 5 + i * 20
      .Left = 110
      .Height = 18
      .Width = 40
      .Caption = "test" & i + 1
'      .OnAction = "testprc"     '←これは使えない??
    End With
  
  Next i
  
  Frame1.ScrollHeight = 5 + i * 20

End Sub

Sub testprc()

  MsgBox "ok"

End Sub

【40990】Re:ユーザーフォームで追加したボタンにマクロを割り...
発言  ichinose  - 06/7/27(木) 13:34 -

引用なし
パスワード
   ▼sin さん:
こんにちは。
これは、クラスモジュールを使用して、
イベントプロシジャーに処理コードを記述する
方法をとらないと実現できません。


「クラスモジュール」 「コントロール配列」等で
ここの過去ログを検索してみてください。

参考になるコードが沢山あると思います。

【40991】Re:ユーザーフォームで追加したボタンにマクロを割り...
発言  角田 WEB  - 06/7/27(木) 13:48 -

引用なし
パスワード
   ListBox と ListBoxのClickイベントでは駄目なんですか?

【41001】Re:ユーザーフォームで追加したボタンにマクロを割り...
お礼  sin  - 06/7/27(木) 15:49 -

引用なし
パスワード
   ▼ichinose さん:
>▼sin さん:
>こんにちは。
>これは、クラスモジュールを使用して、
>イベントプロシジャーに処理コードを記述する
>方法をとらないと実現できません。
>
>
>「クラスモジュール」 「コントロール配列」等で
>ここの過去ログを検索してみてください。
>
>参考になるコードが沢山あると思います。

ありがとうございます。
早速調べてみたいと思います。

【41003】Re:ユーザーフォームで追加したボタンにマクロを割り...
お礼  sin  - 06/7/27(木) 15:53 -

引用なし
パスワード
   ▼角田 さん:
>ListBox と ListBoxのClickイベントでは駄目なんですか?

ありがとうございます。
ただ、ListBoxに読み込んだ内容を編集する必要があるのでListBoxは使えなさそうです。

【41017】Re:ユーザーフォームで追加したボタンにマクロを割り...
お礼  sin  - 06/7/27(木) 18:35 -

引用なし
パスワード
   ▼ichinose さん:
クラスモジュールを使用することでアッサリ解決しました。
今回、初めてクラスモジュールを使用しましたが、かなり便利そうですね。
時間がある時にもう少し勉強してみたいと思います。
ありがとうございました。


'ユーザーフォーム
Dim Classt() As Class1

Private Sub CommandButton1_Click()
  Dim i As Long
  Dim txtb As Object
  Dim cmdb As Object

  For i = 0 To 19
    
    Set txtb = Frame1.Controls.Add("Forms.TextBox.1", "testt" & i, True)
    With txtb
      .Top = 5 + i * 20
      .Left = 5
      .Height = 18
      .Width = 100
    End With
    
    Set cmdb = Frame1.Controls.Add("Forms.CommandButton.1", "testc" & i, True)
    With cmdb
      .Top = 5 + i * 20
      .Left = 110
      .Height = 18
      .Width = 40
      .Caption = "test" & i + 1
    End With
    
    ReDim Preserve Classt(i)
    Set Classt(i) = New Class1
    Classt(i).btnt = cmdb
  Next i
  
  Frame1.ScrollHeight = 5 + i * 20

End Sub


'クラス
Private WithEvents btn As MSForms.CommandButton

Public Property Let btnt(ByVal nbtn As MSForms.CommandButton)
   
   Set btn = nbtn

End Property

Private Sub btn_Click()
  
  MsgBox "ok"

End Sub

7135 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free