Excel-VBA-质量问题可视化管理-17-删除问题

系统:Windows 10
软件:Excel 2016

  • 本系列是假设一种应用场景,键盘质量检查中,发现问题,如何在键盘图片上进行标记和后续的跟踪管理。其实也同样适用在其它应用场景,尤其与位置相关的质量特性管理上
  • 本文拟实现对新增问题对应形状的位置、颜色保存
  • 核心知识点为用多形状表示问题

Part 1: 项目功能介绍

  1. 之前介绍了基于单形状问题表征的一系列操作
  2. 接下来讲讲基于多形状的问题表征,只介绍以下核心4大功能
    • 增,定义问题,采用多圆形来表征
    • 删,删除一个问题
    • 改,基于问题号修改问题
    • 查,基于问题号查询问题

Part 2: 新增问题细节优化

  1. 之前新增问题中的文字部分逻辑有点问题,优化一下
    • 新增问题的序号是在之前的序号基础上+1
    • 若数据库中没有任何问题,则从1开始计数
    ' 如果数据全部删除了
    If inputRow = 3 Then
        middleTxt = 1
    ' 如果已有数据,序号向后增加
    Else
        upTxt = sht.Cells(inputRow - 1, "W")
        middleTxt = CInt(upTxt) + 1
    End If
  1. 另外考虑到形状中间的数字显示问题,把形状大小和显示的文字大小,都调整了一下,其中文字大小调整,使用录制宏录制了一段代码
    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: 删除问题

  1. 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:部分代码解读

  1. 代码和之前单形状并无太大区别,只是因为每个问题可能对应多个形状,需要增加i = i - 1代码,要不然是删除不了单个问题对应的全部形状的。如下图所示,删除3以后,4就会到3原来的位置,但下次循环是从5开始的,所以4一直未被判断过

请添加图片描述


  • 更多学习交流,可加小编微信号learningBin

更多精彩,请关注微信公众号
扫描二维码,关注本公众号

公众号底部二维码.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值