選択範囲の文字列をチェックボックス(フォームコントロール)に置き換える
先日は、選択セルにチェックボックスを配置する関数に挑戦した。
infoment.hatenablog.com
それで、実際にどのような使い方が良いか、色々と思案してみた。
ああでもない、こうでもないと悩むこと二日。
結局シンプルに、次の用法に落ち着いた。
選択範囲の文字列を、チェックボックスに置き換える
方針さえ決まれば、後は愚直に作りこむだけだ。
まず、ユーザーフォームを準備し、以下のように配置する。
各オブジェクトの名前は、各位お好みでOK。
置き換える範囲が飛び石になっている場合を考慮して、最初から「空白無視」にチェックを入れておく。
Private Sub UserForm_Initialize() ' 初期値は、空白無視とする。 ' ※使い勝手を考慮。 IgnoreBlankCheck = True End Sub
終了ボタンを押した場合の処理がこちら(ど定番)。
Private Sub CloseButton_Click() Unload Me End Sub
最後に、配置ボタンがこちら。
配置に関しては、前回作成済みマクロを呼び出している。
Private Sub SetCheckBoxButton_Click() Dim r As Range For Each r In Selection ' 空白を無視しないか、または空白でない場合のみチェックボックス配置。 If IgnoreBlankCheck = False Or r.Value <> vbNullString Then ' CheckBox配置。 SetCheckBox r, , r.Value ' 置き換えのため、セルの文字を削除。 r.ClearContents End If Next End Sub
条件分岐が、少々ややこしい。
- 空白を無視する設定であり
- 且つ
- 空白の場合は
- セットしない
を全てひっくり返すと、
- 空白を無視する設定ではない
- 又は
- 空白ではない場合は
- セットする
となる。
結果はこちら。
もう少し続きます。
参考まで。