像Excel VBA中的运算符一样

我有一个if语句在for循环中,我试图比较当前单元格值与其他string使用like运算符。 由于某些原因,这给我一个types不匹配的错误。 这是因为rng5.Cells(i, 1).Value不是一个string? 任何帮助将不胜感激! 我粘贴了下面的原始代码。

 For i = 1 To rng5.Rows.Count If rng5.Cells(i, 1).Value Like "*test*" Or "*Test*" Or "*Demo*" Or "*demo*" Then rng5.Cells(i, 1).EntireRow.Hidden = True End If Next i 

使用Instr函数

 For i = 1 To rng5.Rows.Count If instr(1,rng5.Cells(i, 1).Value, "test")>0 Or instr(1,rng5.Cells(i, 1).Value, "Test")>0 Or instr(1,rng5.Cells(i, 1).Value, "demo")>0 Or instr(1,rng5.Cells(i, 1).Value, "Demo")>0 Then rng5.Cells(i, 1).EntireRow.Hidden = True End If Next i 

OR操作符只适用于布尔值,所以你必须给布尔值。 你不能像你所做的那样忽略

 For i = 1 To rng5.Rows.Count If rng5.Cells(i, 1).Value Like "*test*" Or rng5.Cells(i, 1).Value Like "*Test*" Or rng5.Cells(i, 1).Value Like "*Demo*" Or rng5.Cells(i, 1).Value Like "*demo*" Then rng5.Cells(i, 1).EntireRow.Hidden = True End If Next i 

使用Lcase或Ucase(如果需要)validation数据的内容使用像没有感觉的情况下

 Sub test() For i = 1 To rng5.Rows.Count If LCase(rng5.Cells(i, 1).Value) Like "*test*" Or _ LCase(rng5.Cells(i, 1).Value) Like "*demo*" Then rng5.Cells(i, 1).EntireRow.Hidden = True End If Next i End Sub