Excel VBA类型与If函数不匹配

时间:2017-07-03 15:53:55

标签: excel vba excel-vba

我对VBA很新,上周一直在教自己。我承担了一项对我来说可能有点复杂的任务。

我有一个包含A - AE列的文档 我需要浏览此文档并将信息移到单独的表格上,具体取决于它是什么。 我现在正试图在移动信息之前使用需要匹配2个要求的IF语句。我可以将每个单独的要求都工作,但不能同时使用,因为不断出现类型不匹配错误。

我不知道我做错了什么。任何帮助都感激不尽。

Sub copyrows()

    Dim Test As Range, Cell As Object

    Set Test = Range("G2:Z4000") 'Substitute with the range which includes your True/False values

    For Each Cell In Test

        If IsEmpty(Cell) Then
            Exit Sub
        End If

        If Cell.Value = "Refund" And "Commission" Then
            Cell.EntireRow.Copy
            Sheet3.Select 'Substitute with your sheet
            ActiveSheet.Range("A65536").End(xlUp).Select
            Selection.Offset(1, 0).Select
            ActiveSheet.Paste
        End If

    Next

End Sub

2 个答案:

答案 0 :(得分:3)

If Cell.Value = "Refund" And "Commission" Then

应改为:

If Cell.Value = "Refund" Or Cell.Value = "Commission" Then

你必须明确每个条件用布尔运算符分隔,如AND或OR。

答案 1 :(得分:2)

上述答案中已经提到了错误的原因@IanL

但是,您的代码远未得到优化。

您可以替换5行:

 Cell.EntireRow.Copy
 Sheet3.Select 'Substitute with your sheet
 ActiveSheet.Range("A65536").End(xlUp).Select
 Selection.Offset(1, 0).Select
 ActiveSheet.Paste

用1:

Cell.EntireRow.Copy Destination:=Sheet3.Range("A65536").End(xlUp).Offset(1)

仅使用完全限定的Select对象,未使用ActiveSheetSelectionRange