ExcelVBA オプションボタンのクリア
Excel のユーザーフォームでは、俗にいうラジオボタンのことを
オプションボタンと言います。
それはさておき、フォーム読み込み時に何も選択されていない
状態のオプションボタンがあったとして、その中のどれか1つ
を選ぶと、普通は何も選ばれていない状態に戻すことはできま
せんよね? 今日は、何かを選択してしまったオプションボタ
ンを、未選択の状態に戻す方法を紹介します。まず思い付くの
は、クリアボタンを用意する、といった方法だと思いますが、
今回は、コマンドを別で用意しない方法をご紹介いたします。
この方法は、クラスモジュールを使いますが、まず、フォーム
のコードウィンドウで、プロシージャの外に次のように書きます。
Private opCol As Collection
次に、新規のクラスモジュールを挿入し、以下のように書きます。
クラスモジュールの名前は、仮に「Class1」とします。
Private WithEvents Target As MSForms.OptionButton
Public Sub SetOp(new_ctrl As MSForms.OptionButton)
Set Target = new_ctrl
End Sub
Private Sub Target_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Target.Value = False
Cancel = True
End Sub
次に、フォームのイニシャライズイベントに、以下のように書きます。
Set opCol = New Collection
Dim op As Class1
Dim ctrl As Control
For Each ctrl In Me.Controls
If TypeName(ctrl) = "OptionButton" Then
Set op = New Class1
op.SetOp ctrl
opCol.Add op
Set op = Nothing
End If
Next
こうすると、オプションボタンのどれか1つをダブルクリックすると、
すべての選択がはずれ、オプションボタンがクリアされます。
ぜひ、活用してみてください。
この記事が気に入ったらサポートをしてみませんか?