セルの中心に円を描画するVBAコード

 


セルの中心に円を描画する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)

使い方

  1. エクセルファイルを開いて、VBAエディタ(Visual Basic for Applications)を起動します。
  2. 新しいモジュールを作成し、上記のコードを貼り付けます。
  3. セル内に円を描画したい場所で、以下のように関数を呼び出します:
Sub TestMakeCircle()
    Dim myCircle As Shape
    Set myCircle = MakeCircle(Selection) ' 選択したセルの中心に円を描画
End Sub

注意点

  • 円の塗り潰しやその他の設定は、必要に応じて追加で行ってください。
  • セルの縦横サイズに合わせて円が描画されます。

 これで、エクセルで円のアスキーアートを作成する方法がわかりましたね!