| 
    
     |  | ▼yasu さん: 面白そうなのでオートシェイプのアークを使って作ってみました。
 半切りドーナツをAdjustmentsを使ってで扇形にして回転しました。
 初級者ですからこの程度が精一杯です。
 
 >>「セルに入力されている値から色を付ける」という処理は、
 >>やる気があれば出来ます。
 >
 >
 >どのようにすればよいのでしょうか…
 >
 シートに以下の様に入力されているとして
 A  B C D E .......R
 1番号 1 2 3 4 .......17
 2色番号4 8 1 6 ....適当に
 
 Sub 区切りドーナツ()
 Dim rr As Double  '半径
 Dim 個数 As Integer '1つの輪を区切る数
 Dim θ As Long, zure As Long  '回転角度とずらす角度
 Dim 番号 As Long  '作った扇に名前を付ける。色を付ける時に使う
 
 '図形に名前を付けているから既にドーナツが表示されていたらエラーになる
 If ActiveSheet.Shapes.Count > 0 Then
 MsgBox "図形を全て消してから実行してください"
 Exit Sub
 End If
 '一番外の60度の扇を六つ描く。番号は12番〜17番
 rr = 100
 個数 = 6
 θ = 180 - (180 - 60) / 2
 zure = 0
 番号 = 12
 Make_Ougi 個数, rr, θ, zure, 番号
 
 '外から2番目の扇を六つ描く番号は6番〜11番
 個数 = 6
 rr = 80
 θ = 180 - (180 - 60) / 2
 zure = 30 ' 外の扇と30度ずらす
 番号 = 6
 Make_Ougi 個数, rr, θ, zure, 番号
 
 '3番目の90度の扇を四つ描く。番号は2番〜5番
 個数 = 4
 rr = 60
 θ = 180 - (180 - 90) / 2
 zure = 30
 番号 = 2
 Make_Ougi 個数, rr, θ, zure, 番号
 
 '最後に中心の円を描く
 rr = 40
 ActiveSheet.Shapes.AddShape(msoShapeOval, 300 - rr, 300 - rr, 2 * rr, 2 * rr).Select
 Selection.Name = "扇1"
 
 'セルB2からセルR2に入力されている色番号で塗りつぶす。
 For i = 1 To 17
 ActiveSheet.Shapes("扇" & i).Fill.ForeColor.SchemeColor = Cells(2, i + 1).Value
 Next
 End Sub
 
 Sub Make_Ougi(ByVal 個数 As Integer, ByVal rr As Double, _
 ByVal θ As Long, ByVal θ2 As Long, ByVal Num As Long)
 Dim i As Integer
 Dim x As Double, y As Double  '中心座標
 x = 300
 y = 300
 
 For i = 0 To 個数 - 1
 With ActiveSheet.Shapes.AddShape(msoShapeBlockArc, x - rr, y - rr, 2 * rr, 2 * rr)
 .Adjustments.Item(1) = θ
 .Adjustments.Item(2) = 0
 .Rotation = 360 / 個数 * i + θ2
 .Name = "扇" & Num + i '取り敢えず図形に名前を付けておく
 End With
 Next i
 
 End Sub
 
 |  |