วันอังคารที่ 29 กรกฎาคม พ.ศ. 2551

รหัสโปรแกรม สำหรับสร้าง แกน x ที่สอง

รหัสคำสั่ง การเขียนจำนวนเส้นของเหล็กเสริม
ต้องการสร้าง แกน 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