• ベストアンサー

ExcelVBAのコントロールの種類の取得方法

ExcelVBAのフォームについての質問です。 コントロールの種類(TextBox,ComboBox等)を取得するプログラムがあれば教えて下さい。 何をしたいかと言うと、Enabledを切り替えるサブルーチンを作りたいのですが、 TextBox等のwindow型のコントロールの場合は、BackColorも変えたいので、条件分岐させたいのです。 ちなみに今は、コントロール名にtxtやcmb等をつけて判断させています。 何か良い方法があれば教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.1

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 '------------------------------------------   勘違いでしたらご容赦願います。 以上ここまで。  

Halical
質問者

お礼

TypeName関数っていうのがあったんですね。 まさに、期待通りの回答でした。 ありがとうございました。

その他の回答 (1)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

シートにコントロールのタイプと名前をリストアップします。 (フォームにページやタブを使用した場合までの確認はしていません。) 参考までに(対象は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

Halical
質問者

お礼

わざわざ、表を作るプログラムまで教えて下さり、ありがとうございました。 お礼は、早い順に付けたので10ptになってしまいましたが、 感謝の気持ちは20ptの人と同様です。 また、お願いいたします。

関連するQ&A