要匹配/复制/粘贴的VBA字典不起作用

时间:2018-05-10 16:43:46

标签: excel excel-vba vba

我被建议将此作为第二个问题发布,但这有点继续我的第一个问题here

我有代码(脚本字典),用于匹配列并将第三个值粘贴到正确行的另一列中。现在,我遇到的问题(新问题)是代码似乎从我的检查器工作表的第一行开始粘贴到我的主工作表中的第一个完整行。假设每个工作表都有许多记录,并且不断添加新记录(这就是我尝试不使用限制性定义范围的原因)。

像这样:

Lavoie把他所有的WO#都放在他自己的小纸上。他打算手动更新“Date Inspector Cleared”,然后点击一个按钮,然后将该日期复制粘贴到主表单中的R列,之后通过WO#(它始终是唯一且永不重复)与WO匹配#在主表(2018)中。下面的图片(我不得不将一些敏感信息涂黑 - 只是假设它并不重要。)

Lavoie的表: Lavoie

主表: Master2018

这是我的代码:

Sub dates()

Application.ScreenUpdating = False

Dim AVals As Object: Set AVals = CreateObject("scripting.dictionary")
Dim i As Long, j As Long, lastRow1 As Long, lastRow2 As Long
Dim sh_insp, sh_2018 As Worksheet
Dim MyName As String

Set sh_insp = ActiveSheet
Set sh_2018 = Sheets("2018")

With sh_insp
    lastRow1 = .Range("A:A").Rows.Count 'last row in spreadsheet
    lastRow1 = .Cells(lastRow1, 7).End(xlUp).Row 'last used row in column G
    'load the AVal dict
    For j = 18 To lastRow1
        MyName = .Cells(j, 7).Value
        If Len(MyName) > 0 And Len(.Cells(j, 18)) > 0 Then AVals.Add MyName, .Cells(j, 18).Value
    Next j
End With

With sh_2018
    lastRow2 = .Range("A:A").Rows.Count
    lastRow2 = .Cells(lastRow2, 7).End(xlUp).Row 'last used row in column G
    For i = 18 To lastRow2
        MyName = .Cells(i, 7).Value
        If AVals.Exists(MyName) Then
            .Cells(i, 18).Value = AVals.Item(MyName)
        End If
     Next i
End With
Application.ScreenUpdating = True

End Sub

我已经清除了WO#s - 为什么代码不会复制粘贴这些值,为什么要跳过?

0 个答案:

没有答案