简体   繁体   English

为什么在vba中使用If Not Range.Value会收到类型不匹配错误?

[英]Why do I receive a Type mismatch error using If Not Range.Value Like in vba?

I'm trying to delete all rows where the value in Column "A" doesn't match the following field formats (1) 7 digit number, (2) Lastname, Firstname, (3) Date ... or the following values (4) INPATIENT (5) OUTPATIENT. 我试图删除“ A”列中的值与以下字段格式不匹配的所有行:(1)7位数字,(2)姓,名,(3)日期...或以下值( 4)不便(5)不便。

Line 9 keeps throwing a "Type Mismatch" error. 第9行不断抛出“类型不匹配”错误。 Any ideas? 有任何想法吗?

Public Sub DeleteRows()
Dim RowToTest As Long

Call setVariables   '***sets wsName variable

    'Code to delete unneeded rows based on cell value in Column "A"
    For RowToTest = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
        With ActiveWorkbook.Worksheets(wsName).Cells(RowToTest, 1)
                If Not .Value Like "???????" Or "*[,]*" Or "*?[/]*?[/]*??" _
                  Or "?????[:]*" Then
                    If Not .Value = "INPATIENT" Or "OUTPATIENT" Then
                        Rows(RowToTest).EntireRow.Delete
                    End If
                End If
        End With
    Next RowToTest
End Sub

your function should look like this: 您的函数应如下所示:

Public Sub DeleteRows()
  Dim RowToTest As Long

  Call setVariables   '***sets wsName variable

  'Code to delete unneeded rows based on cell value in Column "A"
  For RowToTest = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
    With ActiveWorkbook.Worksheets(wsName).Cells(RowToTest, 1)
      If Not (.Value Like "???????" Or .Value Like "*[,]*" Or .Value Like "*?[/]*?[/]*??" Or _
                .Value Like "?????[:]*" Or .Value = "INPATIENT" Or .Value = "OUTPATIENT") Then
        ActiveWorkbook.Worksheets(wsName).Rows(RowToTest).Delete
      End If
    End With
  Next RowToTest
End Sub

use this: 用这个:

If Not .Value Like "???????" And _
     Not .Value Like "*[,]*" And _
       Not .Value Like "*?[/]*?[/]*??" And _
         Not .Value Like "?????[:]*" And _
       .Value <> "INPATIENT" And _
     .Value <> "OUTPATIENT" Then
    Rows(RowToTest).EntireRow.Delete
End If

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM