如果在另一个工作簿中重新logging,则复制logging

我有两个Excel工作簿,第一个比第二个有更多的logging。 在它们中都有多个logging,但不是全部。 我应该拿出那些在这两本工作手册中再次出现的。 由于我从来没有做过任何VBA,所以我用C / C ++写的方式不是很准确。 无论如何,这里是代码:

Sub roznica() Dim sourceSheet1 As Worksheet Dim sourceSheet2 As Worksheet Dim destSheet As Worksheet Dim LastLineSS1 As Integer Dim LastLineSS2 As Integer Dim LastLineDS As Integer Dim i As Integer Dim j As Integer Set sourceSheet1 = Workbooks("EU-Szczecin.xlsm").Worksheets("Sheet1") Set sourceSheet2 = Workbooks("Lista.xlsm").Worksheets("Sheet1") Set destSheet = Workbooks("Szczecin-lista.xlsm").Worksheets("Sheet1") LastLineSS1 = sourceSheet1.Range("A" & Rows.Count).End(xlUp).Row LastLineSS2 = sourceSheet2.Range("A" & Rows.Count).End(xlUp).Row LastLineDS = destSheet.Range("A" & Rows.Count).End(xlUp).Row For i = 2 To LastLineSS1 For j = 2 To LastLineSS2 If sourceSheet1.Cells(i, 1).Value = sourceSheet2.Cells(j, 1).Value & sourceSheet1.Cells(i, 2).Value = sourceSheet2.Cells(j, 2).Value Then destSheet.Cells(i, 1).Value = sourceSheet1.Cells(i, 1).Value destSheet.Cells(i, 2).Value = sourceSheet1.Cells(i, 2).Value End If Next j Next i End Sub 

如果A和B的值匹配,那么macros应该把这些放到第三个工作簿中。 我检查了是否值重新安全,他们这样做逻辑上程序应该通过如果声明,但它没有

在If子句中,要获得逻辑and必须在VBA中使用AND 。 所以replace

If sourceSheet1.Cells(i, 1).Value = sourceSheet2.Cells(j, 1).Value & sourceSheet1.Cells(i, 2).Value = sourceSheet2.Cells(j, 2).Value Then

If sourceSheet1.Cells(i, 1).Value = sourceSheet2.Cells(j, 1).Value AND sourceSheet1.Cells(i, 2).Value = sourceSheet2.Cells(j, 2).Value Then

有些操作符与高级语言的处理方式不同。 而不是! 你使用NOT ,而不是== null你使用的Is Nothing ,正如你现在所经历的,没有分号。 要延长线条,请使用_

&运算符代表string连接。