オプションボタンをきれいな画像に

オプションボタンをきれいな画像に
オプションボタンをきれいな画像に

Excel2016,2013マクロ 61回

画像のオプションボタンを使いやすく

前回(マクロ講座60回)ではオプションボタンを大きく見せる方法を紹介しましたが、管理人的にはどうもやぼったいと感じてしまいます。そこでいっそのことオプションボタンをボタン画像で代替しました。
またコードを1つにまとめて利用しやすくしました。

(サンプルファイルは、こちらから マクロ61回サンプルデータ

同じコードを登録

前回は、画像にそれぞれ別のマクロを登録していましたが、下記画像のように、その中身はほとんど一緒でした。今回は、これを一つにまとめてしまうことにしましょう。
オプションボタンをきれいな画像にマクロ1
必要なのは、ボタンの番号です。どのボタンが選択されたかは、Application.Callerで取得できるので、その名称から番号だけを取り出します。
Public Sub option選択()
    Dim CurrentIndex As Integer
    CurrentIndex = CInt(Replace(Application.Caller, "Option", "")) ' Option1という文字列からoptionをとる
    [LinkedCell].Value = CurrentIndex
    Call オプションボタンの色1
End Sub
画像にそれぞれに、新しいコードを登録します。
「オプションボタンの色」マクロを複数用意することで、ボタンの色も簡単に変更できます。
オプションボタンをきれいな画像にマクロ2

選択した内容をセルに表示

下図のように選択結果の内容をE1セルに表示することにしましょう。
オプションボタンをきれいな画像にマクロ3
E1セルに名前をつけてやります。ここでは「result」としました。
オプションボタンをきれいな画像にマクロ4
Select Caseステートメントをつかって、1が選択されたとき、2が選択されたとき、3が選択されたときと、それぞれE1セルに表示する内容をしていします。E1セルに名前をつけたので、セルの指定が名前でできるようになっています。
オプションボタンをきれいな画像にマクロ5
動作を確認してみましょう。
オプションボタンをきれいな画像にマクロ6

キャプションを変更

ボタンに表示されるキャプションを変更したり、結果の表示内容を変更することで、活用しやすくなります。
オプションボタンをきれいな画像にマクロ7
ボタンの色のコードは、Presetのナンバーを変更するだけで簡単に変えることができます。
Public Sub オプションボタンの色3()
    Dim CurrentIndex As Integer
    Dim LinkedCellIndex As Integer
    LinkedCellIndex = [LinkedCell].Value
    For CurrentIndex = 1 To 3
        With Me.Shapes("Option" & CurrentIndex)
            If CurrentIndex <> LinkedCellIndex Then
                .ShapeStyle = msoShapeStylePreset3
            Else
                .ShapeStyle = msoShapeStylePreset38
            End If
        End With
    Next
End Sub