Vba:if语句中的情况

我不知道我想做错事。 在H栏里有一个像Bank,Chair Table这样的值。 如果在列中是表,那么我想要运行一个案例,列C的情况。如果列C中的值是10或20,这将被复制到F列。在其他情况下,行必须获得一个颜色。 现在,每个列值为<> 10,20的列C都会收到一条消息,如果列中还有H主席或其他人

代码中有什么错误?

Dim i As Long For i = 2 To Worksheets("Read DBF").Range("I" & Rows.Count).End(3).Row If Worksheets("Read DBF").Cells(i, "I") = "OLN" Then Select Case Worksheets("Read DBF").Cells(i, "C") Case 10, 20, 30 Worksheets("Read DBF").Cells(i, "F") = Worksheets("Read DBF").Cells(i, "C") Case Else MsgBox "Wrong number" End Select End If Next i Sheet1.Activate End Sub 

我强烈怀疑10,20,30的值可能是伪装成数字的文本。 10"10"不一样。 检查其默认单元格alignment。 文本是左alignment的,数字/date是右alignment的。 你可以testing两者。

昏暗我只要

 With Worksheets("Read DBF") For i = 2 To .Range("I" & Rows.Count).End(3).Row If UCase(.Cells(i, "I").Value) = "OLN" Then Select Case LCase(.Cells(i, "H").Value2) Case "bank" 'do something for 'bank' Case "chair" 'do something for 'chair' Case "table" Select Case .Cells(i, "C").Value2 Case 10, 20, 30, "10", "20", "30" .Cells(i, "F") = .Cells(i, "C").Value2 Case Else .Cells(i, 1).Resize(1, 26).Interior.Color = vbRed MsgBox "Wrong number" End Select Case Else 'not 'bank', 'chair' or 'table' End Select End If Next i End With 

我把第二个Select Case语句嵌套到列H是'table'的条件中。 有“银行”“主席”的占位符。

我还添加了一个With … End With语句 ,使您的代码更具可读性。