[英]Excel VBA Check if value is "#N/A"
我有一個數據集,它是從 SQL 數據庫中提取的。 我的宏的目標之一是檢查特定數據字段是否包含“#N/A”。 我發現提取的數據未被 excel 識別為 Excel #N/A 錯誤,但它似乎認為它是一個字符串。 如果我嘗試檢查一個單元格是否在提取的數據中包含#N/A,我會得到以下信息:
=ISNA(cell which contains #N/A)
結果為 FALSEIf.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 在你按下F2和Enter時有幫助地轉換它。
常規方法適用:
' 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.