скрыть немодальную пользовательскую форму, если диапазон пуст

Этот макрос ищет в диапазоне ячеек, содержащих ошибки. Если обнаружена ячейка с ошибкой, пользовательская форма позволяет вам изменить эту ячейку на "Да", "Нет" или "Просмотреть позже" с помощью 3 различных командных кнопок. Если ошибок не обнаружено (например, CheckRange - это ничего), появится сообщение msgbox, чтобы вы знали об этом, а затем форма пользователя должна скрыться.

Проблема: весь макрос работает отлично, за исключением того, что я не могу скрыть пользовательскую форму. Поле сообщения появляется, как и планировалось, если ошибок не обнаружено. Но форма пользователя все еще существует.

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

1 ответ

Решение

Решили эту проблему, добавив разгрузить меня в частную подпрограмму каждой командной кнопки, как показано ниже.

Private Sub CommandButton1_Click()
ActiveCell.Value = "Yes"
Unload Me
Call UserformYes_no


End Sub
Другие вопросы по тегам