[英]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.