見出し画像

Excel VBA 便利メモ

自分の職場ではエクセルの帳票をよく使います。
職場の帳票の書式は、『要・不要』などを線で囲んで選択していくようなものが多く、その度に図形の円を挿入して使っています。
ここで挿入される図形は何かしらの色がついていて、塗り潰しなしの設定をして、楕円形にサイズを調布しています。
この図を挿入して調整する作業、何度も同じことの繰り返しなので、1回で済むようにしたいと思い、VBAのコードを書きました。
同じようなことで悩んでいる方の生産性を上げるお役立ちになればと思います。

以下のコードを標準モジュールに追加し、
マクロのショートカットキーに設定するなどして使用します。
私は、個人用マクロブックの標準モジュールにコードを追加し、クイックアクセスツールバーに設定して使用しています。

Excel VBAマクロのコード

Sub test()
Dim m As Long
Dim n As Long
m = ActiveCell.Row
n = ActiveCell.Column

With ActiveSheet.Shapes.AddShape(msoShapeOval, 1, 1, 108, 54)
   .Fill.Visible = msoFalse
   .Left = Range(Cells(m, n), Cells(m, n)).Left
   .Top = Range(Cells(m, n), Cells(m, n)).Top
End With

End Sub

プログラムの解説

  1. セルの位置を同定し、変数に入れる。

  2. 図形(楕円)を挿入する

  3. 図形の塗りつぶしを無しにする

  4. 1.の変数を用いて図形の位置を移動する

図形を挿入するメソッドには挿入位置を指定する必要があることと、実際の帳票で使用する場面を考えると、選択したセルの傍に囲み図形が表示されるのが都合が良いと思いました。
挿入箇所を特定するためにLong型の変数を2つ用意し(mとn)、ActiveCell.Rowでシート上の選択セルの行数、ActiveCell.Columnでシート上の選択セルの列数を取得し、変数に代入しています。
図形を挿入する構文は、AddShape (型、 左、 上、 幅、 高さ)の1行です。
5つの引数は1番目が図形の種類、2番目が図形の位置の左隅、3番目が図形の位置の上端、4番目が図形の横幅、5番目が図形の縦幅です。
これらの引数は、どんな図形をシートのどこに表示するか、図形のサイズはどうするかを決めるために必要なものです。
帳票のシート上で実行するのでActiveSheet.Shapes.AddShapeと書いています。
幅108と高さ54の数字は図形のサイズなので、好みの数字に調整してください。
塗りつぶしや図形の位置についてまとめて設定するため、with句で括っています。
.Fill.Visible = msoFalseで塗りつぶしなし
.Left = Range(Cells(m, n), Cells(m, n)).Leftと
.Top = Range(Cells(m, n), Cells(m, n)).Topで図形の位置を設定します。

AddShapeの引数にRange(Cells(m, n), Cells(m, n)).Leftと記述してもOKなのですが、長めの1行になるので、このように書いています。
コードの書き方等について、この方がわかり易いと思うなど、ご意見ありましたら、コメントしていただけると勉強になります。

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