在代码的这一小部分中,虽然条件设置为true,但它转到Else
语句。
Sub check()
Dim temp As Integer
Sheets("Sheet1").Select
For j = 18 To 29
For i = 2 To 39
If Cells(i, j).Value = "BLOCKED" Then
temp = temp + 1
Else
temp = 0
End If
Next
MsgBox temp
Next
End Sub
虽然在我运行此宏的Excel工作表中存在BLOCKED,但它不会返回true。
请帮助我找到我正在做的错误。
答案 0 :(得分:1)
我怀疑你实际上还没有完成你的代码,但你只是在说#34;它会转到Else"因为MsgBox
正在显示0
,它当前会显示(除非任何列中的最后一个单元格不是" BLOCKED")因为您正在重置{{1}的值每当你找到一个不是" BLOCKED"。
尝试对代码进行这些更改,看看他们是否给出了您期望的答案。
计算多少次的版本" BLOCKED"存在于每一栏:
temp
计算多少次的版本" BLOCKED"存在于整个地区:
Sub check()
Dim temp As Integer
With Sheets("Sheet1")
For j = 18 To 29
temp = 0
For i = 2 To 39
If .Cells(i, j).Value = "BLOCKED" Then
temp = temp + 1
End If
Next
MsgBox temp & " cell" & IIf(temp = 1, "", "s") & " in column " & j & IIf(temp = 1, " is", " are") & " 'BLOCKED'"
Next
End With
End Sub
答案 1 :(得分:0)
请检查" BLOCKED"中是否有额外的空格。细胞。还可以尝试使用
获取单元格的文本If Cells(i, j).Text= "BLOCKED" Then
答案 2 :(得分:0)
碰巧“BLOCKED”并不完全是单元格的内容。 你可能想试试这个。
If instr(1, Cells(i, j), "BLOCKED")>0 Then
希望它有所帮助。