compile error: End If without block If (with more issues)

compile error: End If without block If (with more issues)

以下代码有问题。当我 运行 它时它说编译错误,但我认为我遇到了比这更大的问题。我想要完成的事情:

  1. 打开最近的"on hand report"
  2. 返回 "Master KB-PFEP" 工作表
  3. 如果工作表有过滤器,请清除过滤器
  4. 执行 VLOOKUP 更新现有报告中的现有列

非常感谢您的帮助

    Dim curDate As String, Fname As String
    curDate = Format(Date, "yyyy-mm-dd")
    Dim wba As Workbook
    Fname = "Y:\Consumables\Company\ABC\ABC - Planning & Materials\On Hand Reports\ABC Site\" & curDate & "_INV_R12_ABC_Onhandreport.xlsx"
    Set wba = Workbooks.Open(Filename:=Fname, UpdateLinks:=False, Notify:=False)
    Dim wb As Workbook
    For Each wb In Application.Workbooks
    If wb.Name Like "*Master KB-PFEP" Then wb.Activate
    wb.Worksheets("Master").AutoFilter.Sort.SortFields.Clear
    If (Worksheets("Master Data").AutoFilterMode And Worksheets("Master Data").FilterMode) Or Worksheets("Master Data").FilterMode Then
    Worksheets("Master Data").ShowAllData
    End If
    Range("AL8:A" & Cells(Rows.Count, "A").End(xlUp).Row).Formula = "=SUMIF('Inv Report'!C[-36],RC[-36],'Inv Report'!C[-21])"
End If
End Sub

当条件代码在同一行时,您不需要 End If

If wb.Name Like "*Master KB-PFEP" Then wb.Activate

这意味着你在底部多了一个。修复该问题后,您需要在 End Sub.

之前的某处添加缺失的 Next

我猜你应该有以下内容(没有检查你的 R1C1 值):

  1. wb.Activate
  2. 上的新行
  3. 使用FormulaR1C1代替Formula
  4. End Sub
  5. 之前添加了 Next

Sub SO_30042563()
    Dim curDate As String, Fname As String
    curDate = Format(Date, "yyyy-mm-dd")
    Dim wba As Workbook, wb As Workbook
    Fname = "Y:\Consumables\Company\ABC\ABC - Planning & Materials\On Hand Reports\ABC Site\" & curDate & "_INV_R12_ABC_Onhandreport.xlsx"
    Set wba = Workbooks.Open(Filename:=Fname, UpdateLinks:=False, Notify:=False)
    For Each wb In Application.Workbooks
        If wb.Name Like "*Master KB-PFEP" Then
            wb.Activate
            wb.Worksheets("Master").AutoFilter.Sort.SortFields.Clear
            If (Worksheets("Master Data").AutoFilterMode And Worksheets("Master Data").FilterMode) Or Worksheets("Master Data").FilterMode Then
                Worksheets("Master Data").ShowAllData
            End If
            Range("AL8:A" & Cells(Rows.Count, "A").End(xlUp).Row).FormulaR1C1 = "=SUMIF('Inv Report'!C[-36],RC[-36],'Inv Report'!C[-21])"
        End If
    Next
End Sub