簡體   English   中英

Excel VBA 檢查值是否為“#N/A”

[英]Excel VBA Check if value is "#N/A"

我有一個數據集,它是從 SQL 數據庫中提取的。 我的宏的目標之一是檢查特定數據字段是否包含“#N/A”。 我發現提取的數據未被 excel 識別為 Excel #N/A 錯誤,但它似乎認為它是一個字符串。 如果我嘗試檢查一個單元格是否在提取的數據中包含#N/A,我會得到以下信息:

  • 實際工作表 function =ISNA(cell which contains #N/A)結果為 FALSE
  • VBA: If.range(cell which contains #N/A) = CVErr(xlErrNA) Then我得到Run-time error '13': Type mismatch

但是,如果我在物理上將 go 移動到帶有“#N/A”的單元格,則 select 單元格,按 F2,按 Enter,然后重新運行 VBA 我不再出現錯誤。 在物理選擇單元格並按 Enter 后,工作表公式也會返回 TRUE。

我可以使用 VBA 嘗試查找字符串“#N/A”,但如果我在運行 VBA 之前編輯了數據,我也會收到錯誤,因為現在單元格值是真正的 #N/A 錯誤(錯誤 2042) .

有沒有辦法自動讓 Excel 將字符串“#N/A”識別為 Excel 錯誤,而無需物理選擇每個單元格,或手動復制/粘貼?

您有一個看起來像錯誤值的字符串。 或者你有一個實際的錯誤值,如果 Excel 在你按下F2Enter時有幫助地轉換它。

常規方法適用:

' Check if error
If WorksheetFunction.IsNA(cell.Value) Then

' Check if text-that-looks-like-an-error
ElseIf cell.Value = "#N/A" Then

End If

您可以轉換字符串以使IsNA正常工作。 請測試下一個方法:

  Dim actC As Range: Set actC = ActiveCell
  
  With actC
        .NumberFormat = "General"
        .Value = .Value  'it simulates the editing...
  End With
  Debug.Print WorksheetFunction.IsNA(actC.Value)

actC可以是您想要(首先)轉換的整個范圍......

暫無
暫無

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

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