前言
看到題目榄鉴,估計(jì)大家都笑了,直線有什么好學(xué)的蛉抓,拿起鼠標(biāo)點(diǎn)兩下不就行了么庆尘?
在EXCEL中手動(dòng)畫(huà)一條線非常簡(jiǎn)單,連續(xù)畫(huà)100條線累不累呢,如果數(shù)據(jù)變了巷送,你要再畫(huà)一遍嗎驶忌?
帶著這些問(wèn)題我們看一下vba是怎么畫(huà)線的。
?探究
在EXCEL中按ALT+F11打開(kāi)vba編輯器
在代碼窗口輸入下列代碼:
Sub?畫(huà)線()
ActiveSheet.Shapes.AddLine 50, 20, 300, 100
End Sub
按F5運(yùn)行,你的活動(dòng)窗口就畫(huà)出一條直線,如下圖所示.
畫(huà)線的命令和參數(shù)非常簡(jiǎn)單,就是通過(guò)線段起始點(diǎn)和結(jié)束點(diǎn)的坐標(biāo)確定一條直線.格式為
Activesheet.shapes.addline?start_x, start_y, finish_x, finish_y
EXCEL以左上角為坐標(biāo)原點(diǎn)笑跛,向左為X軸正方向付魔,向下為Y軸正方向,如下圖所示:
想讓直線乖乖的聽(tīng)話飞蹂,首先你要確定端點(diǎn)的坐標(biāo)抒抬,那么端點(diǎn)的坐標(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單元格的高度
?練習(xí)
下面的是一段計(jì)劃模板秃励,根據(jù)開(kāi)始和結(jié)束日期在右面畫(huà)出相應(yīng)的線段
首先確定開(kāi)始日期和結(jié)束日期對(duì)應(yīng)的列,公式如下:
D1=MATCH(B2,$A$1:$O$1,1)
?E1=MATCH(C2,$A$1:$O$1,1)
打開(kāi)vba編輯器來(lái)上一段代碼:
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運(yùn)行代碼峦剔,結(jié)果如下:
?知識(shí)點(diǎn)
圖形坐標(biāo)系的認(rèn)知
代碼看不懂沒(méi)關(guān)系,照葫蘆畫(huà)瓢
畫(huà)線命令:
Activesheet.shapes.addline?start_x, start_y, finish_x, finish_y
線寬:
Selection.ShapeRange.Line.Weight=3
線的顏色:
Selection.ShapeRange.Line.ForeColor.RGB = vbRed
這只是圖形的入門(mén)惠勒,思考一下:如果日期欄不是按天而是按周或按月顯示赚抡,如何去做呢?