• ベストアンサー

ExcelVBA ユーザーフォームに関しての質問です。

ExcelVBA ユーザーフォームに関しての質問です。 ユーザーフォームでフレームを使って、 フレーム内に複数のチェックボックスを配置したとします。 行いたい作業としては次の2点 ?フレーム内に配置したチェックボックスのうち、チェックが入っているものだけの数を調べる ?チェックが入っているボックスの値(caption)を取得して、変数に入れる 以上のことができるでしょうか?

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

標準モジュールに Sub test01() Dim ctrl As Control For Each ctrl In UserForm1.Controls If TypeOf ctrl Is MSForms.CheckBox Then MsgBox ctrl.Name MsgBox ctrl.Parent.Name MsgBox ctrl.Value If ctrl.Parent.Name = "Frame1" Then If ctrl.Value = True Then c = c + 1 End If End If End If Next MsgBox c End Sub フォームにコマンドボタンを設けてそのクリックイベントに Private Sub CommandButton2_Click() test01 End Sub ーーー ユーザーフォームUserForm1には、Frame1、Frame2を設け、Frame1にはチェックボックスを3つ、Frame2にはチェックボックス2つ設けてテストしました。 MsgBox c以外のMsgboxは確認後抹消のこと。 フレーム名をユーザーが好きな名前に変えている場合は、Parent.Name = "Frame1"の””内は、それらに従って変えること。 変数に入れる、については、配列にでも値を入れることを考えれば良いと思う。

ktakusya
質問者

お礼

おぉ!!こんな方法があったんですね!! ありがとうございます!解決しました!

関連するQ&A