セルの中心に円を描画するVBAコード
以下のVBAコードは、指定したセルの中心に円を描画するユーザー定義関数です。この関数を使うことで、円をセル内に簡単に作成できます。
Public Function MakeCircle(r As Range, Optional ρ As Double = 0.85, Optional myWeight As Double = 1.5) As Shape
Dim T As Double
Dim L As Double
Dim W As Double
Dim H As Double
Dim C As Shape
' 円の直径を決定。セルの縦横を比較して、短い方を基準とする
If r.Width >= r.Height Then
W = r.Height * ρ
Else
W = r.Width * ρ
End If
' 円のサイズと配置位置を決定
H = W
T = r.Top + (r.Height - H) / 2
L = r.Left + (r.Width - W) / 2
' 円を描画
Set C = ActiveSheet.Shapes.AddShape(msoShapeOval, L, T, W, H)
C.Line.ForeColor.ObjectThemeColor = msoThemeColorText1
C.Line.Weight = myWeight
Set MakeCircle = C
End Function
ユーザー定義関数の引数
r
: 円を描画する対象のセル範囲ρ
(オプション): 円の「少し小さめ度合い」(デフォルトは85%)myWeight
(オプション): 円の線の太さ(デフォルトは1.5)
使い方
- エクセルファイルを開いて、VBAエディタ(Visual Basic for Applications)を起動します。
- 新しいモジュールを作成し、上記のコードを貼り付けます。
- セル内に円を描画したい場所で、以下のように関数を呼び出します:
Sub TestMakeCircle()
Dim myCircle As Shape
Set myCircle = MakeCircle(Selection) ' 選択したセルの中心に円を描画
End Sub
注意点
- 円の塗り潰しやその他の設定は、必要に応じて追加で行ってください。
- セルの縦横サイズに合わせて円が描画されます。
これで、エクセルで円のアスキーアートを作成する方法がわかりましたね!