アヒルのある日

株式会社AHIRUの社員ブログです。毎週更新!社員が自由に思いついたことを書きます。

プランナー資料作成用VBA:マップ上アイコンの表示をON/OFFする

こんにちは!するどいプランナーです!
今日は予定を変更して簡単なVBAの使用例を説明していこうかと思います。

 

プランナーの資料作成が楽になるようなものとして
前編:マップ上アイコンの表示をON/OFFする
後編:マップ上にアイコンからの範囲を描画する
の2回に分けて説明していきます。

どちらも「if文とfor文が読める人なら改修して使える」くらいの難易度かなと思います。エクセルファイル上でVBAが使用できる状態にする方法は記事内で説明しません。

 

完成イメージ

  • マップ画像上に敵と宝箱の配置情報を表示する
  • 種類ごとにまとめて表示のON/OFFを切り替える

というものを作っていきます。

方法としては、地図画像上にエクセル機能で図形を描画し、図形に設定したテキストで図形を判別して各種制御を行います。

 

手順①地図上にアイコンを配置する

地図上に敵と宝箱のアイコンを配置していきます。

今回はアイコン位置はデータから読み込むのではなく、手作業で配置していきます。

 

表示の切り替えは「図形のテキスト」で行うので、敵には「#敵」、宝箱には「#宝箱」と記載した図形を使用することにしましょう。色や形状は自由です。

このままだとサイズがマップより大きすぎるので調整し、マップ上に配置していきます。文字が見えないサイズになっても問題ありません。

 

手順②VBAマクロを書く

今回は3つの関数を作成します。

(1)指定のテキストを含む図形の表示ON/OFFを切り替える

(2)(1)を使用して敵の表示をON/OFFする

(3)(1)を使用して宝箱の表示をON/OFFする

 

'(1)指定テキストを含む表示のON/OFFを切り替え
Sub 図形の表示切替(target As String)
    '全ての図形をループ
    For Each a In ActiveSheet.Shapes
        '図形がオートシェイプの場合
        If a.Type = 1 Then
            'テキストに「targetが含まれているかを判定
            If InStr(a.TextFrame.Characters.Text, target) > 0 Then
                '表示を切り替え
                a.Visible = Not False
            End If
        End If
    Next
End Sub

 

' (2)敵の表示を切り替え
Sub 表示切替_敵()
    図形の表示切替 "敵"
End Sub

 

' (3)宝箱の表示を切り替え
Sub 表示切替_宝箱()
    図形の表示切替 "宝箱"
End Sub

 

手順③コントロールパネルを作る

ボタンでマクロを呼び出せるようにしましょう。

また、パネル部分にもアイコンを配置しておけば、いまそのアイコンが表示中かどうかを確認することができます。

 

前編はここまで。

後編では「マップ上にアイコンからの範囲を描画する」マクロを作成していきます。