系统:Windows 10
软件:Excel 2016
- 本系列是假设一种应用场景,键盘质量检查中,发现问题,如何在键盘图片上进行标记和后续的跟踪管理
- 其实也同样适用在其它应用场景,尤其与位置相关的质量特性管理上
- 核心知识点,用形状表示问题
Part 1: 项目功能介绍
- 上一个部分的功能已经实现,重复的部分不再赘述
- 接下来的几篇文章说一个延伸功能。之前的文章中,1个问题只有一个形状来表征,或者圆形或者矩形。当一个问题需要几个形状的时候,如何实现。这一部分涉及功能如下
- 多形状定义一个问题,采用直线来做,当然也可以采用其它形状
- 删除问题
- 查询问题
Part 2: 拟实现功能描述
- 本次拟实现功能:新增一个问题后,直线段需要重新移动,最后需要将这个位置保存起来。
AddConnector(type、 BeginX、 BeginY、 EndX, EndY)
type
因为一直是直线,就不需要改动了msoConnectorStraight
- 但是如何获取
BeginX、 BeginY、 EndX, EndY
这4个值呢?
- 尝试过采用
Debug.Print ("EndX =" & newShape.EndX)
,发现不可行
报错
Part 3:测试
- 参考之前的方法,获取
Left,Top,Width,Height
,以及这些参数和我们需要的BeginX、 BeginY、 EndX, EndY
关系是什么呢?
Part 4:代码
Sub Test()
Set sht = ThisWorkbook.Worksheets("测试3")
Set newShape = sht.Shapes.AddConnector(msoConnectorStraight, 200, 800, 500, 950)
Debug.Print ("形状1")
Debug.Print ("Left =" & newShape.Left)
Debug.Print ("Top =" & newShape.Top)
Debug.Print ("Width =" & newShape.Width)
Debug.Print ("Height =" & newShape.Height)
Debug.Print (Chr(10))
Set newShape1 = sht.Shapes.AddConnector(msoConnectorStraight, 200, 800, 500, 650)
Debug.Print ("形状2")
Debug.Print ("Left =" & newShape1.Left)
Debug.Print ("Top =" & newShape1.Top)
Debug.Print ("Width =" & newShape1.Width)
Debug.Print ("Height =" & newShape1.Height)
Debug.Print (Chr(10))
End Sub
代码截图
执行结果
Part 5:部分代码解读
- 线段1:
BeginX、 BeginY、 EndX, EndY
分别为200, 800, 500, 950
Left,Top,Width,Height
分别为200, 800, 300, 150
- 线段2:
BeginX、 BeginY、 EndX, EndY
分别为200, 800, 500, 650
Left,Top,Width,Height
分别为200, 650, 300, 150
- 经过多次测试,结论如下
Width = abs(EndX-BeginX)
Height= abs(EndY-BeginY)
Left = min(BeginX, EndX)
Top= min(BeginY, EndY)
- 关于Left和Top是和坐标系方向有关,如下图所示,左上角位置的X和Y肯定是最小的
- 尴尬的是,通过这4个表达式,并不足以求出
BeginX、 BeginY、 EndX, EndY
,估计应该是有其它方法,欢迎留言
- 更多学习交流,可加小编微信号
learningBin
更多精彩,请关注微信公众号
扫描二维码,关注本公众号