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")