[英]Using an IF statement with a string using .value
.value 命令是否返回字符串,如果不是,您如何使用 IF 語句檢查單元格是否包含正確的字符串。
我正在制作一個預算表,其中某個列設置了預算及其細目應該轉發到哪個部門。
Sub calcMonthly()
Dim ws As Worksheet
Dim wssum As Worksheet
'set worksheets to copy values
Set ws = Sheets("Sheet 1")
Set wssum = Sheets("Sheet 2")
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim bumonth As Currency
Dim busum As Currency
'sort through Departments for % breakdown
For k = 0 To 18
'sort through months
For i = 0 To 11
busum = 0
'sort through each item
For j = 0 To 350
bumonth = 0
bumonth = CCur(ws.Cells(3 + j, 37 + k).Value * ws.Cells(3 + j, 24 + i).Value)
busum = busum + bumonth
Next j
'row C holds the string which details if the item if physical hardware or digital then uploads it to the cell
If ws.Cells(3 + j, 3) = "SW" Then
wssum.Cells(3 + k, 2 + i).Value = busum
Else
wssum.Cells(3 + k, 14 + i).Value = busum
End If
Next i
Next k
End Sub
.Value 確實返回一個字符串,但看起來您沒有將它包含在 IF 語句中。
如果 ws.Cells(3 + j, 3) .value = "SW" 然后
Range.Value
返回一個Variant
其子類型取決於單元格的內容。
給定#N/A
、 #VALUE
、 #REF!
,或任何其他單元格錯誤值,它返回一個Variant/Error
,該Variant/Error
不能被強制轉換為Variant
以外的任何東西 - 嘗試將其與字符串或數值或表達式進行比較將拋出錯誤 13“類型不匹配”。
您可以通過使用IsError
函數評估變體子類型是否為Error
來避免此運行時錯誤,理想情況下,首先將單元格的值捕獲到本地Variant
變量中,這樣您就不必兩次訪問該單元格。
給定一個沒有公式、沒有值、沒有任何內容的空單元格,它返回一個Variant/Empty
; IsEmpty
函數可用於驗證此變體子類型。
給定一個Date
值,它返回一個Variant/Date
。 給定任何數值,它返回一個Variant/Double
。 給定一個TRUE
或FALSE
值,它返回一個Variant/Boolean
。
並且給定一個String
值,它確實返回一個Variant/String
。
請注意, Range
類的默認成員是一個隱藏的[_Default]
屬性,帶有兩個可選參數:
當沒有提供參數時,對.Value
的顯式調用是等效的。 顯式成員調用通常應優先於隱式默認成員調用,並且無論是隱式還是顯式,調用都應保持一致:
If ws.Cells(3 + j, 3) = "SW" Then ' implicit: .Value wssum.Cells(3 + k, 2 + i).Value = busum Else wssum.Cells(3 + k, 14 + i).Value = busum End If
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.