excel使用—— 宏 | VBA | 画线
2017-12-28 本文已影响17人
十月石榴2013
父上大人让我给他做一个方便在excel里面画曲线的东西。根据sheet1中的数据画出在sheet2中划出曲线。
效果:
sheet1 sheet2
首先不能用绘制折线图的方法,因为数据太多了,用折线图反而不直观。
查了些资料开了些脑洞之后觉得还是使用宏最方便。
宏的快捷键设置
查看宏——>选项
加入了比例尺之后的代码:
Sub 宏1()
'还是要在sheet1中,选中相关的那个单元格
'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 = 被选中的单元格的上一个数据的值
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) '设置颜色
End With
End Sub
这段代码的缺陷就是使用宏的时候必须位于sheet1,选中相关的那个单元格。
由于父上大人画图的时候只需要增加最后一天的,所以由设计了另一版代码(每次只能画最后一条线)。
Sub 宏2()
'Sheet1.Cells(3,2)——表1第3行第2格
'Sheet2.Rows.RowHeight——列高
'Sheet1.UsedRange.Rows.Count——sheet1中存在的数据行数
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 = 被选中的单元格的上一个数据的值
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) '设置颜色
End With
End Sub
这样两个版本应该够用了。
其他 · Excel查看代码功能
除了使用宏之外,右键sheet——>查看代码,也可以对excel批量处理进行编程,比如选择在鼠标双击或鼠标右键或改变选择的单元格的时候发生动作。
又其他 · Excel与绘图
查资料的时候在网上看到了这个一个图片:
鹅妹子嘤。
突然想到有了每条线条的起始点终止点位置,通过宏 或者右键sheet——>查看代码 即使是完全不懂绘画的程序员也能复制出这一幅画。
或许矢量图就是这么个思想吧。