簡體   English   中英

使用帶有字符串的 IF 語句使用 .value

[英]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 給定一個TRUEFALSE值,它返回一個Variant/Boolean

並且給定一個String值,它確實返回一個Variant/String


請注意, Range類的默認成員是一個隱藏的[_Default]屬性,帶有兩個可選參數:

屬性_Default([RowIndex], [ColumnIndex]),Excel.Range的默認成員

當沒有提供參數時,對.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.

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