Vba:if语句中的案例

时间:2016-01-22 19:54:33

标签: excel vba

我不知道我想做错了。 在H列中有一个像Bank,Chair Table这样的值。 如果在列中是表,那么我想运行一个案例,列C的情况。如果在列C中的值是10或20,则将其复制到列F.在其他情况下,行必须获得颜色。 现在每个r列C的值为<> 10,20收到消息,如果有H座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

1 个答案:

答案 0 :(得分:2)

我强烈怀疑 10,20,30 值可能是伪装成数字的文本。 10"10"不同。检查它们的默认单元格对齐文本左对齐,数字/日期右对齐。你可以测试两者。

Dim i As Long

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 statement嵌套到H列为' table' 的情况下。 '银行' '主席' 有占位符。

我还添加了With ... End With statement以使您的代码更具可读性。