代码之家  ›  专栏  ›  技术社区  ›  A Cohen

VBA-较短的If/Or语句

  •  1
  • A Cohen  · 技术社区  · 7 年前

    我一直在寻找一种较短的方法来使用这个If/Or语句,但没有用。

    Sheets("Raw").Select
    Dim rowCount As Integer, rows As Integer
    rows = 0
    Dim CRC As String
    
    rowCount = Range("I2", Range("I2").End(xlDown)).rows.Count
    For rows = 1 To rowCount
        Range("I1").Offset(rows, 0).Select
        CRC = ActiveCell.Value
        If CRC = "Admin Cancellation" _
        Or CRC = "Building sold / Management Co changed" _
        Or CRC = "Contract Renewal delayed" _
        Or CRC = "System decommissioned" _
        Or CRC = "Building demolished" _
        Or CRC = "cancelled due to credit hold/risk" Then
            ActiveCell.rows.EntireRow.Select
            Selection.Delete Shift:=xlUp
            rows = rows - 1
            rowCount = rowCount - 1
        End If
    Next rows
    

    提前感谢!

    2 回复  |  直到 7 年前
        1
  •  3
  •   David Zemens    7 年前

    尝试Select…Case语句。

    Dim rws As Long, rcnt As Long, crc As String
    
    With Worksheets("Raw")
        rcnt = .Cells(.Rows.Count, "I").End(xlUp).Row
        For rws = rcnt To 2 Step -1
            Select Case LCase(.Cells(rws, "I").Value2)
                Case "admin cancellation", "building sold / management co changed", _
                     "contract renewal delayed", "system decommissioned", _
                     "building demolished", "cancelled due to credit hold/risk"
                     .Rows(rws).EntireRow.Delete
            End Select
        Next rws
    End With
    

        2
  •  2
  •   braX    7 年前
      Select Case CRC
        Case "Admin Cancellation", "Building sold / Management Co changed", _
             "Contract Renewal delayed", "System decommissioned", "Building demolished", _
             "cancelled due to credit hold/risk"
          ' do something
      End Select