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つをダブルクリックすると、
すべての選択がはずれ、オプションボタンがクリアされます。

ぜひ、活用してみてください。

この記事が気に入ったらサポートをしてみませんか?