この記事では、VBAをつかってエクセルシート上に円図形を等間隔で一括作成する方法をご紹介していきます。
線の太さや、色、間隔は自由に調整できるようになっています。
あなたの状況に応じでぜひご活用ください。
それではやっていきましょう。
等間隔で円図形を一括作成するVBAコード
さっそくですが、さきほどの画像の円図形を一括作成するVBAコードをご紹介します。
Sub Macro1()
Dim i As Integer
Dim p_line As Integer, l_line As Integer, w_line As Integer
base_pos = 200
p_line = 40
w_line = 5
color_line = RGB(255, 0, 0)
With ActiveSheet.Shapes
For i = 1 To 10
pos_cor = base_pos - i * p_line / 2
.AddShape(msoShapeOval, pos_cor, pos_cor, i * p_line, i * p_line).Select
With Selection.ShapeRange
.Fill.Visible = msoFalse
.Line.ForeColor.RGB = color_line
.Line.Weight = w_line
End With
Next
End With
End Sub
でてきた変数について解説しておきます。
base_pos :シート上の左上からの距離
⇒これを十分にとっておかなければ円の数を増やしたときにうまくいきません。
p_line:円ひとつひとつの間隔です。
⇒大きくすれば線の幅が大きくなります。
w_line:線の太さです。
⇒あまり大きくするととなりの円とかぶりますのでご注意ください。
color_line:RGBで色を指定します。
⇒RGBについてもう少し知りたい方は以下の記事を参考にしてください。
【VBA】セルの背景色&文字色を変更する方法!RGB概念から解説!
変数を変更して実行してみる
先ほどのコードの中に入っていた変数を変更して実行してみましょう。
今度は以下のようにコードを記述しました。
Sub Macro2()
Dim i As Integer
Dim p_line As Integer, l_line As Integer, w_line As Integer
base_pos = 200
p_line = 20
w_line = 2
color_line = RGB(0, 0, 255)
With ActiveSheet.Shapes
For i = 1 To 10
pos_cor = base_pos - i * p_line / 2
.AddShape(msoShapeOval, pos_cor, pos_cor, i * p_line, i * p_line).Select
With Selection.ShapeRange
.Fill.Visible = msoFalse
.Line.ForeColor.RGB = color_line
.Line.Weight = w_line
End With
Next
End With
End Sub
こいつを実行すると以下のような結果になりました。
線の太さ、色、間隔が変わっていることがわかると思います。
あなたの状況にあわせて適宜変数を変更してみましょう。
おわりに
というわけで今回は円図形を等間隔に配置する方法をご紹介しました。
画像の上に配置することで物体の中心からの距離などを測ることができそうですね。
ぜひ状況に応じてご活用ください。
また、以下の記事ではフリー曲線をVBAで配置する方法もご紹介しています。
興味があればご覧ください。
【エクセルVBA】フリー曲線できれいなSIN(COS)カーブを描く方法!
このように、私のブログではエクセルスキルはもちろん、様々なプログラミングスキルを紹介しています。
今は仕事中で時間がないかもしれませんが、ぜひ通勤時間中などに他の記事も読んでいただけると嬉しいです。
⇒興味をもった方は【ヒガサラ】で検索してみてください。
確実にスキルアップできるはずです。
最後に、この記事が役に立ったという方は、ぜひ応援よろしくお願いします。
↓ 応援ボタン
それではまた!
コメント