簡體   English   中英

如果范圍是什么退出子,用戶窗體,特殊單元格

[英]if range is Nothing Exit sub, userform, specialcells

目標:包含錯誤的單元格的搜索范圍,如果發現一個無模式的useform 顯示並允許您將出售更改為“是”、“否”或“稍后查看”。 如果在范圍內沒有發現有錯誤的單元格,msgbox 會出現讓你知道,隱藏用戶表單並退出子。

問題:我無法獲得 If range is nothing hide userform 並退出 sub 以正常工作。 每當我達到處理所有單元格錯誤的程度時,我都會在“未找到單元格”范圍內收到 1004 錯誤。

Sub UserformYes_no_review()
Dim Custchk As CustomListCheck
Set Custchk = VBA.UserForms.Add(CustomListCheck.Name)

With New CustomListCheck
    Set CheckRange = Sheets("Sheet1").Range("A1:N2000").SpecialCells(xlCellTypeFormulas, xlErrors)
    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

我瀏覽了大量 Stackoverflow 頁面並嘗試了所有我能找到的解決方案,但沒有任何效果。 作為旁注,我在 msgbox 上使用了一個用戶表單,因為我需要它是無模式的。

當您使用SpecialCells ,請使用錯誤處理。

改變

Set CheckRange = Sheets("Sheet1").Range("A1:N2000").SpecialCells(xlCellTypeFormulas, xlErrors)

On Error Resume Next
Set CheckRange = Sheets("Sheet1").Range("A1:N2000").SpecialCells(xlCellTypeFormulas, xlErrors)
On Error GoTo 0

這解決了問題。 仍然存在用戶表單不會隱藏的問題,但我會為此發布另一個問題。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM