ต้องการสร้าง แกน x ที่สอง
เลยใช้คำสั่ง VBA ควบคุมคำนวณ
แต่ยังมี Bug ตอนเรียกครั้งแรกบ้าง ยังหาสาเหตุไม่ได้
แก้ที่ปลายเหตุไปก่อน
Sub DrawSteelRuler()
Origin = 20
Space1 = 20
Call DrawNumSteelRuler(15, Origin, 2) '''' ทดระยะเยื้องครั้งแรก จาก Bug
Call DrawNumSteelRuler(20, Origin + Space1)
Call DrawNumSteelRuler(25, Origin + 2 * Space1)
End Sub
Private Sub DrawNumSteelRuler(dia, Offset, Optional x_OffSet = 0)
ActiveChart.PlotArea.Select
Len1 = Selection.InsideWidth
Max_Axis = ActiveChart.Axes(xlCategory).MaximumScale
Min_Axis = ActiveChart.Axes(xlCategory).MinimumScale
Scale_Len = Max_Axis - Min_Axis
myScale = Len1 / Scale_Len
x_org = Selection.InsideLeft
y_org = Selection.Top + Selection.Height
'''' ทดระยะเยื้องเมื่อเรียกครั้งแรก จาก Bug แต่เรียกครี้งที่สองจะไม่มีปัญหา
If Not IsMissing(x_OffSet) Then x_org = x_org - x_OffSet
x1 = x_org
x2 = x1 + Len1
y1 = y_org + Offset
y2 = y1
ActiveChart.Shapes.AddLine(x1, y1, x2, y2).Select '' Draw Axis
'' dia = 12
area1 = Application.Pi() * (dia / 20) ^ 2
num = Int(Max_Axis / area1)
y1 = y1 - 2
y2 = y1 + 4
For i = 0 To num
x1 = x_org + i * area1 * myScale
x2 = x1
ActiveChart.Shapes.AddLine(x1, y1, x2, y2).Select '' Draw Mark
Debug.Print x1
Next
End Sub


ไม่มีความคิดเห็น:
แสดงความคิดเห็น