【问题标题】:VBA Compile error syntax error what is wrong?VBA 编译错误语法错误是什么问题?
【发布时间】:2018-11-01 09:12:36
【问题描述】:

我有以下代码,并且在同一行中不断出现错误。 With .Range("A18:bz18").AutoFilter Field:=78, Criteria1:=">14"

我尝试了各种方法,但我无法做到正确。我对 VBA 很陌生,我认为我还没有完全理解它,所以任何帮助都将不胜感激。

提前致谢!

Dim ws As Worksheet
Dim writeRow As Long

Sheets("master").UsedRange.Offset(1).ClearContents    

Application.ScreenUpdating = False    

For Each ws In ThisWorkbook.Worksheets    

    If ws.Name <> "master" And ws.Name <> "BAF_MASTER" And ws.Name <> "Lookup_Sheet" And ws.Name <> "Front_Sheet" And ws.Name <> "COMMITTEE_MENU" And ws.Name <> "EFFECTS_OF_CONTROL" And ws.Name <> "BAF_GUIDE" And ws.Name <> "Strategy_Guide" And ws.Name <> "Master_Template" Then    

        writeRow = Sheets("master").Cells(Rows.count, "y").End(xlUp).Row + 1    

        With ws    
                    .AutoFilterMode = False        

                        With .Range("A18:bz18").AutoFilter Field:=78, Criteria1:=">14"    

                          .Offset(1).Copy Destination:=Sheets("master").Range("A" & writeRow)    
                        End With     

                    .AutoFilterMode = False    
        End With    
    End If    

Next ws    


Application.ScreenUpdating = True    

【问题讨论】:

    标签: vba syntax compiler-errors


    【解决方案1】:

    试试:

    Option Explicit
    
    Sub test()
    
    Dim ws As Worksheet
    Dim writeRow As Long
    
    Sheets("master").UsedRange.Offset(1).ClearContents
    
    Application.ScreenUpdating = False
    
    For Each ws In ThisWorkbook.Worksheets
    
        If (ws.Name <> "master") And _
            (ws.Name <> "BAF_MASTER") And _
            (ws.Name <> "Lookup_Sheet") And _
            (ws.Name <> "Front_Sheet") And _
            (ws.Name <> "COMMITTEE_MENU") And _
            (ws.Name <> "EFFECTS_OF_CONTROL") And _
            (ws.Name <> "BAF_GUIDE") And _
            (ws.Name <> "Strategy_Guide") And _
            (ws.Name <> "Master_Template") Then
            writeRow = Sheets("master").Cells(Rows.Count, "y").End(xlUp).Row + 1
    
            With ws
                .AutoFilterMode = False
                With .Range("A18:bz18")
                    .AutoFilter Field:=78, Criteria1:=">14"
                    .Offset(1).Copy Destination:=Sheets("master").Range("A" & writeRow)
                End With
                .AutoFilterMode = False
            End With
    
        End If
    
    Next ws
    
    Application.ScreenUpdating = True
    
    End Sub
    

    在 if 语句中分隔条件也是一个好主意。参见代码。

    【讨论】:

    • 谢谢。使用此代码,我现在收到错误运行时 1004 范围类的自动过滤方法在行上失败 .AutoFilter Field:=78, Criteria1:=">14" .Field 78 是一个辅助列,它使用 = cell from a 获取数据计算列。谢谢
    • 是的,第 78 列是 bz,值是数字。单元格包含 =BYrowumber(例如 BZ19 包含 =BY19 显示值)以给出使用 if 语句计算的上一列中的值。
    • 请发送更多详细信息,例如单元格 A18 和 BZ18 的图像
    • 抱歉,错误 1004 - 我该怎么做?
    • 使用截图工具拍摄一些图像,编辑您的问题,选择您所写内容上方工具栏上的第五次点击,然后选择图像。
    猜你喜欢
    • 2021-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多