系统:Windows 10
软件:Excel 2016
- 本系列是假设一种应用场景,键盘质量检查中,发现问题,如何在键盘图片上进行标记和后续的跟踪管理。其实也同样适用在其它应用场景,尤其与位置相关的质量特性管理上
- 本文拟实现对新增问题对应形状的位置、颜色保存
- 核心知识点为用多形状表示问题
Part 1: 项目功能介绍
- 之前介绍了基于单形状问题表征的一系列操作
- 接下来讲讲基于多形状的问题表征,只介绍以下核心4大功能
- 增,定义问题,采用多圆形来表征
- 删,删除一个问题
- 改,基于问题号修改问题
- 查,基于问题号查询问题
Part 2: 新增问题细节优化
- 之前新增问题中的文字部分逻辑有点问题,优化一下
- 新增问题的序号是在之前的序号基础上+1
- 若数据库中没有任何问题,则从1开始计数
' 如果数据全部删除了
If inputRow = 3 Then
middleTxt = 1
' 如果已有数据,序号向后增加
Else
upTxt = sht.Cells(inputRow - 1, "W")
middleTxt = CInt(upTxt) + 1
End If
- 另外考虑到形状中间的数字显示问题,把形状大小和显示的文字大小,都调整了一下,其中文字大小调整,使用录制宏录制了一段代码
widthVal = 30
heightVal = 30
positionX = sht.Range("B22").Left
positionY = sht.Range("B22").Top
Set newShape = sht.Shapes.AddShape(msoShapeOval, positionX, positionY, widthVal, heightVal)
newShape.TextFrame2.TextRange.Characters.Text = middleTxt
' 文字居中
newShape.TextFrame2.TextRange.ParagraphFormat.Alignment = msoAlignCenter
newShape.TextFrame2.VerticalAnchor = msoAnchorMiddle
newShape.TextFrame2.TextRange.Font.Size = 6
Part 3: 删除问题
- 对J-L区域,N-W区域进行问题删除,基于拟删除的问题号,进行比对删除
动图
Part 4:代码
Sub 删除()
Set sht = ThisWorkbook.Worksheets("问题管理")
problemID = sht.Range("B15")
' 删除问题
maxRow = sht.Cells(Rows.Count, "J").End(xlUp).Row
For i = 3 To maxRow Step 1
existsID = sht.Cells(i, "J")
If existsID = problemID Then
sht.Range("J" & i & ":L" & i).Select
Selection.Delete Shift:=xlUp
End If
Next
' 删除问题对应形状信息
maxRow = sht.Cells(Rows.Count, "N").End(xlUp).Row
For i = 3 To maxRow Step 1
existsID = sht.Cells(i, "N")
If existsID = problemID Then
sht.Range("N" & i & ":W" & i).Select
Selection.Delete Shift:=xlUp
' 从删除的下一行数据开始
i = i - 1
End If
Next
End Sub
代码截图
Part 5:部分代码解读
- 代码和之前单形状并无太大区别,只是因为每个问题可能对应多个形状,需要增加
i = i - 1
代码,要不然是删除不了单个问题对应的全部形状的。如下图所示,删除3以后,4就会到3原来的位置,但下次循环是从5开始的,所以4一直未被判断过
- 更多学习交流,可加小编微信号
learningBin
更多精彩,请关注微信公众号
扫描二维码,关注本公众号