- ベストアンサー
ExcelVBAのコントロールの種類の取得方法
ExcelVBAのフォームについての質問です。 コントロールの種類(TextBox,ComboBox等)を取得するプログラムがあれば教えて下さい。 何をしたいかと言うと、Enabledを切り替えるサブルーチンを作りたいのですが、 TextBox等のwindow型のコントロールの場合は、BackColorも変えたいので、条件分岐させたいのです。 ちなみに今は、コントロール名にtxtやcmb等をつけて判断させています。 何か良い方法があれば教えて下さい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
TypeName関数を使ってみてください。 '-------------------------------------- Private Sub CommandButton1_Click() Dim myCtrl As Control For Each myCtrl In Me.Controls Select Case TypeName(myCtrl) Case "TextBox" myCtrl.BackColor = RGB(255, 0, 0) Case "Label" Case "ListBox" myCtrl.BackColor = RGB(0, 255, 0) Case "CheckBox" Case "ComboBox" Case "CommandButton" End Select Next myCtrl End Sub '------------------------------------------ 勘違いでしたらご容赦願います。 以上ここまで。
その他の回答 (1)
- fujillin
- ベストアンサー率61% (1594/2576)
シートにコントロールのタイプと名前をリストアップします。 (フォームにページやタブを使用した場合までの確認はしていません。) 参考までに(対象はUserForm1にしてあります) Sub test() Dim c As Control, r As Long Load UserForm1 r = 3 Cells(1, 1) = ("コントロール数:" & UserForm1.Controls.Count) Cells(2, 1).Value = "No" Cells(2, 2).Value = "名前" Cells(2, 3).Value = "種類" For Each c In UserForm1.Controls Cells(r, 1).Value = r - 2 Cells(r, 2).Value = c.Name Cells(r, 3).Value = TypeName(c) r = r + 1 Next c End Sub
お礼
わざわざ、表を作るプログラムまで教えて下さり、ありがとうございました。 お礼は、早い順に付けたので10ptになってしまいましたが、 感謝の気持ちは20ptの人と同様です。 また、お願いいたします。
お礼
TypeName関数っていうのがあったんですね。 まさに、期待通りの回答でした。 ありがとうございました。