2025年2月23日日曜日

エクセルVBAでドーナツ形状を描画するコード

エクセルVBAで多数のセルの塗りつぶしを使ってドーナツ形状を描画するコードは、いくつかの方法で実現できます。ここでは、比較的シンプルな方法と、少し応用的な方法の2つを紹介します。

方法1:単純な塗りつぶしによるドーナツ

この方法は、ドーナツの形状を単純な塗りつぶしで表現するものです。

VBA
Sub DrawDonut()

  Dim centerRow As Long, centerCol As Long
  Dim radiusOuter As Long, radiusInner As Long
  Dim row As Long, col As Long

  ' ドーナツの中心座標と半径を設定
  centerRow = 10
  centerCol = 10
  radiusOuter = 5
  radiusInner = 3

  ' シートの塗りつぶしをクリア
  Cells.Interior.Color = xlNone

  ' 外側の円を塗りつぶす
  For row = centerRow - radiusOuter To centerRow + radiusOuter
    For col = centerCol - radiusOuter To centerCol + radiusOuter
      If (row - centerRow) ^ 2 + (col - centerCol) ^ 2 <= radiusOuter ^ 2 Then
        Cells(row, col).Interior.Color = vbRed ' 色は自由に設定
      End If
    Next col
  Next row

  ' 内側の円を塗りつぶしなしにする
  For row = centerRow - radiusInner To centerRow + radiusInner
    For col = centerCol - radiusInner To centerCol + radiusInner
      If (row - centerRow) ^ 2 + (col - centerCol) ^ 2 <= radiusInner ^ 2 Then
        Cells(row, col).Interior.Color = xlNone
      End If
    Next col
  Next row

End Sub

このコードでは、まずドーナツの中心座標と外側・内側の半径を設定します。次に、シート全体の塗りつぶしをクリアし、外側の円を赤色で塗りつぶします。最後に、内側の円を塗りつぶしなしにすることで、ドーナツ形状を描画します。

方法2:図形(円)の組み合わせによるドーナツ

この方法は、2つの円の図形を組み合わせてドーナツ形状を描画するものです。

VBA
Sub DrawDonutShape()

  Dim centerTop As Double, centerLeft As Double
  Dim radiusOuter As Double, radiusInner As Double

  ' ドーナツの中心座標と半径を設定
  centerTop = 100
  centerLeft = 100
  radiusOuter = 50
  radiusInner = 30

  ' 外側の円を作成
  With ActiveSheet.Shapes.AddShape(msoShapeOval, centerLeft - radiusOuter, centerTop - radiusOuter, radiusOuter * 2, radiusOuter * 2)
    .Fill.ForeColor.RGB = vbRed ' 色は自由に設定
    .Line.Visible = msoFalse ' 枠線を非表示
  End With

  ' 内側の円を作成
  With ActiveSheet.Shapes.AddShape(msoShapeOval, centerLeft - radiusInner, centerTop - radiusInner, radiusInner * 2, radiusInner * 2)
    .Fill.ForeColor.RGB = vbWhite ' 背景色と同じ色に設定
    .Line.Visible = msoFalse ' 枠線を非表示
  End With

End Sub

このコードでは、まずドーナツの中心座標と外側・内側の半径を設定します。次に、外側の円と内側の円の2つの図形を作成し、それぞれの色と枠線を設定することで、ドーナツ形状を描画します。

どちらの方法を選ぶべきか

どちらの方法を選ぶべきかは、どのようなドーナツを描画したいかによって異なります。

  • 方法1 は、単純なドーナツ形状をセル単位で表現するのに適しています。セルの塗りつぶしを利用するため、塗りつぶし色やパターンを細かく設定できます。
  • 方法2 は、図形としてドーナツ形状を表現するのに適しています。図形のサイズや位置を自由に設定でき、拡大・縮小にも対応できます。

その他

  • 上記コードでは、ドーナツの色を赤色に設定していますが、vbRedの部分を他の色に変更することで、ドーナツの色を変更できます。
  • ドーナツのサイズや位置は、コード中の変数を変更することで調整できます。
  • より複雑なドーナツ形状を描画したい場合は、複数の円弧や多角形を組み合わせて表現する方法もあります。

これらの情報を参考に、目的に合った方法でドーナツ形状を描画してみてください。

0 件のコメント:

コメントを投稿