Vba 比较两个工作簿并删除匹配的行

Vba 比较两个工作簿并删除匹配的行,vba,excel,duplicates,code-duplication,Vba,Excel,Duplicates,Code Duplication,我试图比较两本工作簿,但在运行宏时不太可能出现错误 下标超出范围 有人能帮我消除这个错误吗?谢谢 Sub CompInTwoWorkbooks() Dim wb1 As Workbook, wb2 As Workbook Dim ws1 As Worksheet, ws2 As Worksheet Dim c As Range, rng As Range Dim lnLastRow1 As Long, lnLastRow2 As Long Dim lnTo

我试图比较两本工作簿,但在运行宏时不太可能出现错误

下标超出范围

有人能帮我消除这个错误吗?谢谢

Sub CompInTwoWorkbooks()
    Dim wb1 As Workbook, wb2 As Workbook
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim c As Range, rng As Range
    Dim lnLastRow1 As Long, lnLastRow2 As Long
    Dim lnTopRow1 As Long, lnTopRow2 As Long
    Dim lnCols As Long, i As Long

    Set wb1 = Workbooks("listeappli.xlsx") 'Adjust as required
    Set wb2 = Workbooks("Keyword.xlsx") 'Adjust as required

    Set ws1 = wb1.Sheets("listeappli") 'Adjust as required
    Set ws2 = wb2.Sheets("Keyword") 'Adjust as required

    lnTopRow1 = 2 'first row containing data in wb1 'Adjust as required
    lnTopRow2 = 2 'first row containing data in wb2 'Adjust as required

     'Find last cells containing data:
    lnLastRow1 = ws1.Range("M:M").Find("*", Range("M1"), LookIn:=xlValues, searchdirection:=xlPrevious).Row
    lnLastRow2 = ws2.Range("A:A").Find("*", Range("A1"), LookIn:=xlValues, searchdirection:=xlPrevious).Row

    Set rng = ws2.Range("A" & lnTopRow2 & ":A" & lnLastRow2)

    lnCols = ws1.Columns.Count
    ws1.Columns(lnCols).Clear 'Using the very right-hand column of the sheet

    For i = lnLastRow1 To lnTopRow1 Step -1
        For Each c In rng
            If ws1.Range("M" & i).Value = c.Value Then
                ws1.Cells(i, lnCols).Value = "KEEP" 'Add tag to right-hand column of sheet if match found
                Exit For
            End If
        Next c
    Next i

     'Delete rows where the right-hand column of the sheet is blank
    Set rng = ws1.Range(Cells(lnTopRow1, lnCols), Cells(lnLastRow1, lnCols))
    rng.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    ws1.Columns(lnCols).Clear
End Sub

如果工作簿尚未打开,并且希望宏自动打开,则必须使用

如果listeappli.xlsx与实际文件位于同一路径中,请使用以下命令

Set wb1 = Workbooks.Open(Filename:=ThisWorkbook.Path & Application.PathSeparator & "listeappli.xlsx")
或者指定Filename:=like的完整路径


你能告诉我你在哪一行出错吗?VBA编辑器没有提到行号。它给出一般错误号,它显示错误信息,然后有一行用黄色标记。那是哪一行?看一看如何调试VBA代码的教程。无法修复错误@MarkFitzgerald Set wb1=Workbooks ListAppli.xlsx“根据需要调整”工作簿ListAppli.xlsx是否已在Excel中打开?还是相同的错误下标超出范围,但肯定不在该行中。它在第01行中。它不能在第01行中。请阅读并学习如何正确调试代码。另外,请始终说明您在哪种代码上出错。行号不准确,我知道如何调试
Set wb1 = Workbooks.Open(Filename:="C:\MyFolder\listeappli.xlsx")