excel使用—— 宏 | VBA | 画线

作者: 十月石榴2013 | 来源:发表于2017-12-28 18:26 被阅读17次

    父上大人让我给他做一个方便在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,选中相关的那个单元格。

    吐槽一下excel的行宽与列高单位不一样,换算不准,所以我也没有用,这是在百度上查到的: image.png

    由于父上大人画图的时候只需要增加最后一天的,所以由设计了另一版代码(每次只能画最后一条线)。

    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与绘图
    查资料的时候在网上看到了这个一个图片:

    98701426_17.gif 出处:http://www.360doc.com/content/17/0509/23/25710133_652551885.shtml
    鹅妹子嘤。
    突然想到有了每条线条的起始点终止点位置,通过 或者右键sheet——>查看代码 即使是完全不懂绘画的程序员也能复制出这一幅画。
    或许矢量图就是这么个思想吧。

    相关文章

      网友评论

        本文标题:excel使用—— 宏 | VBA | 画线

        本文链接:https://www.haomeiwen.com/subject/eommgxtx.html