系统:Windows 10
软件:Excel 2016
- 本系列是假设一种应用场景,键盘质量检查中,发现问题,如何在键盘图片上进行标记和后续的跟踪管理
- 其实也同样适用在其它应用场景,尤其与位置相关的质量特性管理上
- 核心知识点,用形状表示问题
Part 1: 项目功能介绍(更新)
- 上一个部分的功能已经实现,重复的部分不再赘述
- 接下来的几篇文章说一个延伸功能。之前的文章中,1个问题只有一个形状来表征,或者圆形或者矩形。当一个问题需要几个形状的时候,如何实现。这一部分涉及功能如下
- 多形状定义一个问题,采用直线来做,当然也可以采用其它形状
- 删除问题
- 查询问题
Part 2: 拟实现功能描述
- 本次拟实现功能:新增一个问题,该问题可以使用任意条线段来表示
动图
静图
Part 3:基本逻辑
- 因为不知道一个问题由几个线段构成,所在在数据库存储中采用两个部分构成,类似形成1对n关系的两张表格
- J-L列用来存储问题,这里只是示意,没有放太多列
- N-W列用来存储问题对应的形状。其中N列表示问题ID列,O列用来存储形状对应ID。当一个问题存在多个形状时,N列就会是同一个ID,O列用不同ID来表示 - 如何实现问题到底有几段线段构成呢?这里B16单元格用来存储正在操作的问题ID,新增的线段默认都是与这个ID关联
- 如果是新的问题,应该先手动把这个ID清空
- 如果是在老问题上新增线段表示,只需要把老问题的ID写入此单元格即可 - 新增完线段后,需要把最新的位置保存下来,这个将在下一篇文章说
Part 4:代码
Sub 新增问题()
Set sht = ThisWorkbook.Worksheets("问题管理")
problemID = sht.Range("B16")
flag = 0
If problemID = "" Then
flag = 1
problemID = "P-" & getUniqueId()
' 把新增的问题ID写入
sht.Range("B16") = problemID
End If
Set newShape = sht.Shapes.AddConnector(msoConnectorStraight, 200, 800, 300, 700)
shapeName = newShape.Name
With newShape.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 0, 0)
.Transparency = 0
.Weight = 2.25
End With
' 问题库信息
If flag = 1 Then
maxRow = sht.Cells(Rows.Count, "J").End(xlUp).Row
inputRow = maxRow + 1
sht.Cells(inputRow, "J").Value = problemID
End If
' 形状信息
maxRow2 = sht.Cells(Rows.Count, "N").End(xlUp).Row
inputRow2 = maxRow2 + 1
sht.Cells(inputRow2, "N").Value = problemID
shapeID = "S-" & getUniqueId()
sht.Cells(inputRow2, "O").Value = shapeID
sht.Cells(inputRow2, "P").Value = shapeName
End Sub
代码截图
Part 5:部分代码解读
newShape.Line.Weight = 2.25
设置线段宽度,代码是通过录制宏获取,如下图的过程
录制宏
- 更多学习交流,可加小编微信号
learningBin
更多精彩,请关注微信公众号
扫描二维码,关注本公众号