| 
    
     |  | 以前投稿させていただき教えていただいたのですが マクロ関数がよくわかりません。よろしければ
 わかるかた説明していただけないでしょうか?
 
 あと、このマクロでは、データが入ってると新規でシートが作成され
 データによって円が作成されるのですが、フォーマットというシートを利用して
 その上に円が作成されるようにしたいのですができますでしょうか?
 
 Option Explicit
 Sub sample()
 Dim BKdx As Variant
 Dim BJdx As Variant
 Dim c As Range
 Dim BKarray As Variant
 Dim BJarray As Variant
 BKarray = Evaluate( _
 "transpose({0,1,2,3;" & _
 "159.75,249.75,343.75,432.75;" & _
 "29.25,157.25,29.25,29.25})")
 BJarray = Evaluate( _
 "transpose({0,1,2,3;" & _
 "100,150,200,250;" & _
 "30,100,80,25})")
 '↑これが、BK列、BJ列の数値に対応する円の作成位置を表すマスターデータです。
 '本来なら、シート上に配置するのが良いと思います。そうすれば、データの変更や追加があっても
 'コードの変更が要りません
 With Worksheets("sheet1")
 For Each c In .Range("bk2", .Cells(.Rows.Count, "bk").End(xlUp))
 With Application
 BKdx = .Match(Val(c.Value), .Index(BKarray, 0, 1), 0)
 End With
 With Application
 BJdx = .Match(Val(c.Offset(0, -1).Value), .Index(BJarray, 0, 1), 0)
 End With
 If (Not IsError(BKdx)) Or (Not IsError(BJdx)) Then
 With Worksheets.Add(after:=Worksheets(Worksheets.Count))
 .Name = "sheet" & c.Row
 DoEvents
 If Not IsError(BKdx) Then
 With .Shapes.AddShape(msoShapeOval, _
 BKarray(BKdx, 2), BKarray(BKdx, 3), 15.75, 15.75)
 .Fill.Visible = msoFalse
 End With
 End If
 If Not IsError(BJdx) Then
 With .Shapes.AddShape(msoShapeOval, _
 BJarray(BJdx, 2), BJarray(BJdx, 3), 15.75, 15.75)
 .Fill.Visible = msoTrue
 .Fill.ForeColor.SchemeColor = 15
 .Fill.Transparency = 0.51
 End With
 End If
 End With
 End If
 Next
 End With
 End Sub
 
 
 |  |