いつも勉強させていただいております。
現在、ユーザーフォームで入力画面を作成しています。
質問なのですが、コマンドボタンを押したときに
その名前を取得したいのですが、そのボタンがFrameや
マルチページの中にあると以下の記述では、フレームや
ページの名前を返してしまうのですが、どのようにコードを
記述すればよろしいでしょうか?
Private Sub CommandButton13_Click()
MsgBox Me.ActiveControl.Name
End Sub
フレームやマルチページの中にあっても、
「CommandButton13」の名前を返す書き方
があればご指導のほどお願いいたします。
宜しくお願いいたします。
No.2ベストアンサー
- 回答日時:
こんにちは。
コントロールの種類で場合わけし、ActiveControl の結果がコンテナ
であれば、さらにその中の ActiveControl を探せば良いかと。
Private Sub CommandButton13_Click()
MsgBox ActiveControlEx.Name
End Sub
Private Function ActiveControlEx() As Control
Dim ac As Control
Set ac = ActiveControl
Do
Select Case UCase$(TypeName(ac))
Case "FRAME"
Set ac = ac.ActiveControl
Case "MULTIPAGE"
Set ac = ac.Pages(ac.Value).ActiveControl
Case Else
Set ActiveControlEx = ac
Exit Do
End Select
Loop
End Function
No.1
- 回答日時:
コマンドボタン名だけの表示をクラスモジュールを使ってやってみます。
まず以下をユーザーフォームモジュールシートに貼り付けますDim myCb() As Class1
Private Sub UserForm_Initialize()
Dim cnt, i As Integer
Dim ctrl As Control
ReDim myCb(1 To UserForm1.Controls.Count)
For Each ctrl In UserForm1.Controls
If TypeName(ctrl) = "CommandButton" Then
cnt = cnt + 1
Set myCb(cnt) = New Class1
Set myCb(cnt).opt = ctrl
End If
Next
End Sub
またこれ以下は左上のVBA Projectでシート名を右クリックし「挿入」→「クラスモジュール」で表示される画面に貼り付けて下さい(Class1という名前は変更しないこと!)
Public WithEvents myCb As MSForms.CommandButton
Public Property Set opt(setcb As MSForms.CommandButton)
Set myCb = setcb
End Property
Public Property Get opt() As MSForms.CommandButton
End Property
Sub myCb_Click()
' コマンドボタンクリック時の動作を記述するところ
MsgBox myCb.Name & " がクリックされました" & Chr(13) & _
"ActiveControlは" & UserForm1.ActiveControl.Name & "です"
End Sub
Userform1を表示させてコマンドボタンをクリックすると、そのオブジェクト名が表示されます。ActiveControl名も表示させていますから違いが分かると思います
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) フレーム内のオプションボタンの選択結果をセルに書き出したい。 図のような預金種目というフレームにオプ 2 2022/07/29 11:12
- Excel(エクセル) PDFファイルに日付を名前にして保存したい。 エクセル2019でワークシートに請求書のフォームを作り 2 2023/05/27 11:13
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- PHP PHPSpreadsheetによる書き出し時のページネーション方法について 1 2023/03/20 10:35
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドボタンがあるかどうか...
-
Excel:コマンドボタンの移動
-
コマンドボタンを押すたびに大...
-
スクロールしてもボタンを常に...
-
Accessのコマンドボタンの立体...
-
押したボタンの位置取得(共通の...
-
Excel VBA --- コマンドボタ...
-
エクセルのコマンドボタンの位...
-
Excel VBA 複数のコマンドボ...
-
チェックボックスで「いずれか1...
-
エクセルVBA
-
エクセルVBAでOptionButtonのオ...
-
実行中の作業を中止させるコマンド
-
[ExcelVBA] コマンドボタンを押...
-
EXCELでNo.を変えて印刷したい
-
エクセルでコマンドボタンを押...
-
エクセルVBA シート上にあるコ...
-
Auto CAD の F1(ヘルプ)を機...
-
PPTのコマンドボタンがクリック...
-
マクロボタンを別のファイルで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel:コマンドボタンの移動
-
コマンドボタンを押すたびに大...
-
スクロールしてもボタンを常に...
-
押したボタンの位置取得(共通の...
-
コマンドボタンがあるかどうか...
-
エクセルVBAでOptionButtonのオ...
-
コマンドボタンで「終了ボタン...
-
Excel VBA --- コマンドボタ...
-
エクセルVBA シート上にあるコ...
-
ShowAllDataのエラーを回避したい
-
Accessのコマンドボタンの立体...
-
エクセルVBA
-
EXCELでNo.を変えて印刷したい
-
PPTのコマンドボタンがクリック...
-
マクロ登録ボタンに色をつける
-
実行中の作業を中止させるコマンド
-
エクセルのコマンドボタンの位...
-
[ExcelVBA] コマンドボタンを押...
-
Wordでドラッグした文字列を括...
-
チェックボックスで「いずれか1...
おすすめ情報