看到題目,估計大家都笑了,直線有什么好學(xué)的,拿起鼠標(biāo)點兩下不就行了么?
在EXCEL中手動畫一條線非常簡單,連續(xù)畫100條線累不累呢,如果數(shù)據(jù)變了,你要再畫一遍嗎?
帶著這些問題我們看一下vba是怎么畫線的。
在EXCEL中按ALT+F11打開vba編輯器
在代碼窗口輸入下列代碼:
Sub 畫線()
ActiveSheet.Shapes.AddLine 50, 20, 300, 100
End Sub
按F5運行,你的活動窗口就畫出一條直線,如下圖所示.
畫線的命令和參數(shù)非常簡單,就是通過線段起始點和結(jié)束點的坐標(biāo)確定一條直線.格式為
Activesheet.shapes.addline start_x, start_y, finish_x, finish_y
EXCEL以左上角為坐標(biāo)原點,向左為X軸正方向,向下為Y軸正方向,如下圖所示:
想讓直線乖乖的聽話,首先你要確定端點的坐標(biāo),那么端點的坐標(biāo)與單元格是什么關(guān)系呢?
單元格的坐標(biāo)和尺寸屬性如下表所示:
功能 | 解釋 |
CELLS(2,1).LEFT | 單元格左上角的X坐標(biāo) |
CELLS(2,1).TOP | 單元格左上角的Y坐標(biāo) |
CELLS(2,1).WIDTH | 單元格的寬度 |
CELLS(2,1).HEIGHT | 單元格的高度 |
休息一下馬上回來:
下面的是一段計劃模板,根據(jù)開始和結(jié)束日期在右面畫出相應(yīng)的線段
首先確定開始日期和結(jié)束日期對應(yīng)的列,公式如下:
D1=MATCH(B2,$A$1:$O$1,1)
E1=MATCH(C2,$A$1:$O$1,1)
打開vba編輯器來上一段代碼:
Sub drawline()
For i = 2 To 4
Start_x = Cells(i,Cells(i, 4)).Left
Start_y = Cells(i,Cells(i, 4)).Top + Rows(i).Height / 2
Finish_x =Cells(i, Cells(i, 5)).Left + Cells(i, Cells(i, 5)).Width
Finish_y = Start_y
ActiveSheet.Shapes.AddLine(Start_x,Start_y,Finish_x, Finish_y).Select
WithSelection.ShapeRange.Line
.Weight = 3
.ForeColor.RGB= vbRed
End With
Next
End Sub
按F5運行代碼,結(jié)果如下:
圖形坐標(biāo)系的認(rèn)知
代碼看不懂沒關(guān)系,照葫蘆畫瓢
畫線命令:
Activesheet.shapes.addline start_x, start_y, finish_x, finish_y
線寬:
Selection.ShapeRange.Line.Weight=3
線的顏色:
Selection.ShapeRange.Line.ForeColor.RGB = vbRed
這只是圖形的入門,思考一下:如果日期欄不是按天而是按周或按月顯示,如何去做呢?