我正在遍歷一個專案串列,其中大部分是數字,但偶爾我會得到一個字串。
我想跳過字串并轉到下一行而不破壞回圈。我將數字定義為雙打,因此字串給了我一個型別不匹配錯誤。我想我應該使用某種 IF 測驗,但不確定如何告訴 VBA 跳過“錯誤”變數。
我嘗試使用變體來避免錯誤,但找不到 IF 測驗來區分它們。
uj5u.com熱心網友回復:
如果您只想獲得顯式數字, 從而排除任何 文本格式的數字( NumberFormat = "@"),這將被解釋為Double無論如何,您可以撰寫如下代碼,檢查變數型別 ( VarType) 以及NumberFormat:
Sub ExplicitNumbersOnly()
Dim rng As Range
Set rng = Tabelle1.Range("A2:A10")
Dim i As Long
For i = 1 To rng.Rows.Count
Dim currCell As Range: Set currCell = rng.Cells(i, 1)
If VarType(currCell) = vbDouble And currCell.NumberFormat <> "@" Then
Debug.Print "OK:", currCell.Value
'... do something
'...
Else
'Debug.Print "Omitted: " & currCell.Address
End If
Next i
End Sub
uj5u.com熱心網友回復:
這是一個顯式測驗每個值以查看它是否“雙重兼容”的小示例:
Sub NumCk()
Dim r As Range, rng As Range, v As Variant, d As Double
Set rng = Range("A1:A10")
For Each r In rng
v = r.Value
On Error Resume Next
d = CDbl(v)
If Err.Number = 0 Then
r.Offset(0, 1) = d / 2
Else
Err.Number = 0
End If
On Error GoTo 0
Next r
End Sub
它會拒絕像“hello world”這樣的文本值,但接受像“1.2”這樣的值作為文本字串。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/375353.html
