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

Excel2016,2013マクロ 61回
見られて恥ずかしくないきれいなオプションボタン
前回(マクロ講座60回)ではオプションボタンを大きく見せる方法を紹介しましたが、管理人的にはどうもやぼったいと感じてしまいます。そこでいっそのことオプションボタンをボタン画像で代替えできないかと考えました。
(サンプルファイルは、こちらから
マクロ61回サンプルデータ)
オプションボタンをきれいな画像で作る
オプションボタンの代わりをする画像を挿入しましょう。挿入タブから、図形を挿入します。図形上にOption1とい文字列を入力します。(わかりやすくするためです。)

図形Option1をコピーして3つにします。
図形には、「四角形:角を丸くする1」という使いずらい名前がデフォルトでついています。これはあとで変更します。

「四角形:角を丸くする1」という名前を単に、Option1に変更します。Enterで確定すると名前が変更されます。

Option1、Option2、Option3とボタン名と表示テキストが同じ画像が3つ作成できました。

リンクしたセルを作る
どれを選択したのか、はっきりさせるために、D1セルの名前をLinkedCellに変更します。Enterで確定します。

オプションボタンにするためのコード
VBEを起動して、Sheet1に次のコードを記述します。
[LinkedCell].Value = 1だけ[LinkedCell].Value = 2、[LinkedCell].Value = 3と変更してあるだけの簡単なコードです。
Public Sub option1選択()
[LinkedCell].Value = 1
オプションボタンの色1
End Sub

選択したボタンの色を変更するコード
これで、どの画像を選択しても、選択した画像のナンバーが設定したLinkedCellに表示されるようになります。
されに選択したボタン画像の色を変更するために「オプションボタンの色」というマクロコードを記述します。

結果はこのように、選択したボタンの色が変わるとともに、選択した画像のナンバーが設定したLinkedCellに表示されます。

オプションボタンの色を変更するのも簡単です。

画像の色は、
.ShapeStyle = msoShapeStylePreset34のようにナンバーを指定しているだけです。
Public Sub オプションボタンの色2()
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 = msoShapeStylePreset34
Else
.ShapeStyle = msoShapeStylePreset31
End If
End With
Next
End Sub
msoShapeStylePresetは、
画像を挿入して選択すると表示される描画ツールにある書式タブの図形のスタイルグループに用意されているスタイルにあらかじめ設定されているナンバーです。

次回はさらにコードを使いやすくしましょう。
お疲れさまでした