线表入门-如何优雅的画一条直线

前言

看到题目,估计大家都笑了,直线有什么好学的,拿起鼠标点两下不就行了么?

在EXCEL中手动画一条线非常简单,连续画100条线累不累呢,如果数据变了,你要再画一遍吗?

带着这些问题我们看一下vba是怎么画线的。

 探究

在EXCEL中按ALT+F11打开vba编辑器

在代码窗口输入下列代码:

Sub 画线()

ActiveSheet.Shapes.AddLine 50, 20, 300, 100

End Sub

按F5运行,你的活动窗口就画出一条直线,如下图所示.

画线的命令和参数非常简单,就是通过线段起始点和结束点的坐标确定一条直线.格式为

Activesheet.shapes.addline start_x, start_y, finish_x, finish_y

EXCEL以左上角为坐标原点,向左为X轴正方向,向下为Y轴正方向,如下图所示:

想让直线乖乖的听话,首先你要确定端点的坐标,那么端点的坐标与单元格是什么关系呢?

单元格的坐标和尺寸属性如下表所示:

功能解释

CELLS(2,1).LEFT单元格左上角的X坐标

CELLS(2,1).TOP单元格左上角的Y坐标

CELLS(2,1).WIDTH单元格的宽度

CELLS(2,1).HEIGHT单元格的高度

 练习

下面的是一段计划模板,根据开始和结束日期在右面画出相应的线段

首先确定开始日期和结束日期对应的列,公式如下:

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运行代码,结果如下:


 知识点

图形坐标系的认知

代码看不懂没关系,照葫芦画瓢

画线命令:

Activesheet.shapes.addline start_x, start_y, finish_x, finish_y

线宽:

Selection.ShapeRange.Line.Weight=3

线的颜色:

Selection.ShapeRange.Line.ForeColor.RGB = vbRed

这只是图形的入门,思考一下:如果日期栏不是按天而是按周或按月显示,如何去做呢?

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • VBA订制工具栏 http://club.excelhome.net/thread-1047254-1-1.htm...
    大海一滴写字的地方阅读 6,763评论 0 0
  • 本例为设置密码窗口 (1) If Application.InputBox(“请输入密码:”) = 1234 Th...
    浮浮尘尘阅读 14,750评论 1 20
  • 1.1 VBA是什么 直到90年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动化的应用程序,人们不得...
    浮浮尘尘阅读 22,071评论 6 49
  • 可以通过在属性窗口设置名称来给对象重新命名,名字可以由字母、汉字(2字符)、数字以及下划线组成,但必须以字母或汉字...
    重头再来0706阅读 6,669评论 0 1
  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 9,982评论 0 0

友情链接更多精彩内容