6.8-问题交互

选中某个图形后,使用快捷键,ctrl+m,则弹出一个窗口,显示问题的详细信息。基本逻辑是获取选择所选图形的内部变量名称,再去数据库中遍历查找,然后显示出来。


../_images/6-6.png

图6-6 问题交互


代码如下

Sub showInfo()
    selectedShape = Selection.Name
    
    Set sht = ThisWorkbook.Worksheets("问题管理")
    
    ' 获取行数
    maxRow = sht.Cells(Rows.Count, "Q").End(xlUp).Row
    
    questionType = ""
    uniqueId = ""
    questionType = ""
    problemStatus = ""
    
    For i = 3 To maxRow Step 1
        shapeName = sht.Cells(i, "Q").Value
        If shapeName = selectedShape Then
            uniqueId = sht.Cells(i, "J").Value
            questionType = sht.Cells(i, "K").Value
            problemStatus = sht.Cells(i, "L").Value
            rowNum = i
            Exit For
        End If
    Next i
    
    If uniqueId <> "" Then
        info = "已选择图形信息如下:id号," & uniqueId & ";问题种类," & questionType & _
        ";问题状态," & problemStatus & Chr(10) & Chr(13) & "问题所在行:" & rowNum
        
    Else
        info = "未识别出所选图形,请检查是否选中图形。若检查选择无误,请联系开发者"
    End If
    
    MsgBox info
    
End Sub
 

这里就出现了一个问题,选中一个图形后,如果通过点击按钮去触发上面的过程,那么当前选择的图形就变成了点击的按钮了。为了解决这个问题,设置了一个快捷键,触发上面的过程。具体操作是,先选中图像,然后按下快捷键。在Thisworkbook中定义以下事件

Private Sub Workbook_Open()
    Call showAllProblem
    
    '创建快捷键
    Application.OnKey "^m", "F_问题交互.showInfo"
End Sub