excel使用—— 宏 | VBA | 畫線

父上大人讓我給他做一個方便在excel里面畫曲線的東西。根據(jù)sheet1中的數(shù)據(jù)畫出在sheet2中劃出曲線。
效果:


sheet1
sheet2

首先不能用繪制折線圖的方法,因為數(shù)據(jù)太多了,用折線圖反而不直觀。
查了些資料開了些腦洞之后覺得還是使用宏最方便。

宏的快捷鍵設(shè)置
查看宏——>選項

加入了比例尺之后的代碼:

Sub 宏1()
'還是要在sheet1中,選中相關(guān)的那個單元格
'Sheet1.Cells(3,2)——表1第3行第2格
'Sheet2.Rows.RowHeight——列高
Dim BILICHI As Double  '比例尺
BILICHI = 10
Dim DATE0 As Integer    '定義橫向偏移
DATE0 = 0
Dim ZERO As Integer     '定義零點所在的行
ZERO = 11 * BILICHI
Dim row2 As Integer     '直線終止點y = 被選中單元格中的值
row2 = ZERO - ActiveCell.Value
Dim column As Integer   '直線終止點x = 被選中單元格的行號+橫向偏移
comlumn = ActiveCell.row + DATE0
Dim row1 As Integer     '直線起始點y = 被選中的單元格的上一個數(shù)據(jù)的值
row1 = ZERO - Sheet1.Cells(ActiveCell.row - 1, ActiveCell.column).Value
Set myDocument = Worksheets(2)
With myDocument.Shapes.AddLine(Sheet2.Cells(row1, comlumn - 1).Left, Sheet2.Rows.RowHeight * row1 / BILICHI, Sheet2.Cells(row2, comlumn).Left, Sheet2.Rows.RowHeight * row2 / BILICHI).Line '畫直線
    .ForeColor.RGB = RGB(255, 0, 0)     '設(shè)置顏色
End With
End Sub

這段代碼的缺陷就是使用宏的時候必須位于sheet1,選中相關(guān)的那個單元格。

吐槽一下excel的行寬與列高單位不一樣,換算不準,所以我也沒有用,這是在百度上查到的:
image.png

由于父上大人畫圖的時候只需要增加最后一天的,所以由設(shè)計了另一版代碼(每次只能畫最后一條線)。

Sub 宏2()
'Sheet1.Cells(3,2)——表1第3行第2格
'Sheet2.Rows.RowHeight——列高
'Sheet1.UsedRange.Rows.Count——sheet1中存在的數(shù)據(jù)行數(shù)
Dim BILICHI As Double  '比例尺
BILICHI = 10
Dim DATE0 As Integer    '定義橫向偏移
DATE0 = 0
Dim ZERO As Integer     '定義零點所在的行
ZERO = 11 * BILICHI
Dim row2 As Integer     '直線終止點y = 被選中單元格中的值
row2 = ZERO - Sheet1.Cells(Sheet1.UsedRange.Rows.Count, Sheet1.UsedRange.Columns.Count).Value
Dim column As Integer   '直線終止點x = 被選中單元格的行號+橫向偏移
comlumn = Sheet1.UsedRange.Rows.Count + DATE0
Dim row1 As Integer     '直線起始點y = 被選中的單元格的上一個數(shù)據(jù)的值
row1 = ZERO - Sheet1.Cells(Sheet1.UsedRange.Rows.Count - 1, Sheet1.UsedRange.Columns.Count).Value
Set myDocument = Worksheets(2)
With myDocument.Shapes.AddLine(Sheet2.Cells(row1, comlumn - 1).Left, Sheet2.Rows.RowHeight * row1 / BILICHI, Sheet2.Cells(row2, comlumn).Left, Sheet2.Rows.RowHeight * row2 / BILICHI).Line '畫直線
    .ForeColor.RGB = RGB(50, 0, 255)     '設(shè)置顏色
End With
End Sub

這樣兩個版本應(yīng)該夠用了。

其他 · Excel查看代碼功能
除了使用宏之外,右鍵sheet——>查看代碼,也可以對excel批量處理進行編程,比如選擇在鼠標雙擊或鼠標右鍵或改變選擇的單元格的時候發(fā)生動作。

又其他 · Excel與繪圖
查資料的時候在網(wǎng)上看到了這個一個圖片:

98701426_17.gif
出處:http://www.360doc.com/content/17/0509/23/25710133_652551885.shtml
鵝妹子嚶。
突然想到有了每條線條的起始點終止點位置,通過 或者右鍵sheet——>查看代碼 即使是完全不懂繪畫的程序員也能復(fù)制出這一幅畫。
或許矢量圖就是這么個思想吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容