如果范围为空则隐藏无模式用户窗体
hide modeless userform if range is nothing
这个宏在一个范围内搜索包含错误的单元格,如果找到一个有错误的单元格,用户表单允许您将该单元格更改为 "Yes"、"no" 或 "review later" 通过3 个不同的命令按钮。如果没有发现错误(即 CheckRange 什么都没有),则会弹出一个消息框让您知道,然后用户窗体应该隐藏。
问题:整个宏运行良好,除了我无法让用户窗体隐藏。当没有发现错误时,消息框甚至会按计划出现。但是用户表单仍然存在。
Sub UserformYes_no_review()
Dim Custchk As CustomListCheck
Set Custchk = VBA.UserForms.Add(CustomListCheck.Name)
Set CheckRange = Nothing
With New CustomListCheck
On Error Resume Next
Set CheckRange = Sheets("Sheet1").Range("A1:N2000").SpecialCells(xlCellTypeFormulas, xlErrors)
On Error GoTo 0
If CheckRange Is Nothing Then
MsgBox "All items have been accounted for"
CustomListCheck.Hide
Exit Sub
Else
For Each Cell In CheckRange
Cell.Select
If VarType(ActiveCell.Value) = vbError Then
Custchk.Show vbModeless
End If
Next Cell
End If
End With
End Sub
Private Sub CommandButton1_Click()
ActiveCell.Value = "Yes"
Call UserformYes_no
End Sub
Private Sub CommandButton2_Click()
ActiveCell.Value = "No"
Call UserformYes_no
End Sub
Private Sub CommandButton3_Click()
ActiveCell.Value = "Review Later"
Call UserformYes_no
End Sub
通过将 unload me 添加到每个命令按钮私有子组件来解决这个问题,如下所示
Private Sub CommandButton1_Click()
ActiveCell.Value = "Yes"
Unload Me
Call UserformYes_no
End Sub
这个宏在一个范围内搜索包含错误的单元格,如果找到一个有错误的单元格,用户表单允许您将该单元格更改为 "Yes"、"no" 或 "review later" 通过3 个不同的命令按钮。如果没有发现错误(即 CheckRange 什么都没有),则会弹出一个消息框让您知道,然后用户窗体应该隐藏。
问题:整个宏运行良好,除了我无法让用户窗体隐藏。当没有发现错误时,消息框甚至会按计划出现。但是用户表单仍然存在。
Sub UserformYes_no_review()
Dim Custchk As CustomListCheck
Set Custchk = VBA.UserForms.Add(CustomListCheck.Name)
Set CheckRange = Nothing
With New CustomListCheck
On Error Resume Next
Set CheckRange = Sheets("Sheet1").Range("A1:N2000").SpecialCells(xlCellTypeFormulas, xlErrors)
On Error GoTo 0
If CheckRange Is Nothing Then
MsgBox "All items have been accounted for"
CustomListCheck.Hide
Exit Sub
Else
For Each Cell In CheckRange
Cell.Select
If VarType(ActiveCell.Value) = vbError Then
Custchk.Show vbModeless
End If
Next Cell
End If
End With
End Sub
Private Sub CommandButton1_Click()
ActiveCell.Value = "Yes"
Call UserformYes_no
End Sub
Private Sub CommandButton2_Click()
ActiveCell.Value = "No"
Call UserformYes_no
End Sub
Private Sub CommandButton3_Click()
ActiveCell.Value = "Review Later"
Call UserformYes_no
End Sub
通过将 unload me 添加到每个命令按钮私有子组件来解决这个问题,如下所示
Private Sub CommandButton1_Click()
ActiveCell.Value = "Yes"
Unload Me
Call UserformYes_no
End Sub