Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 要匹配的VBA字典/复制/粘贴无效_Excel_Vba - Fatal编程技术网

Excel 要匹配的VBA字典/复制/粘贴无效

Excel 要匹配的VBA字典/复制/粘贴无效,excel,vba,Excel,Vba,我被建议将此作为第二个问题发布,但这多少是我发现的第一个问题的延续 我有一个代码(脚本字典),用于匹配列并将第三个值粘贴到正确行的另一列中。现在,我遇到的问题(新问题)是代码似乎没有从我的inspector工作表的第一行粘贴到主工作表的第一整行。假设每个工作表都有许多记录,并且不断添加新的记录(这就是为什么我不尝试使用限制性定义的范围) 像这样: 拉沃伊把所有的工作都放在自己的小床单里。他打算自己手动更新“日期检查员清除”,然后点击一个按钮,然后在通过WO#(总是唯一且从不重复)与母版纸(201

我被建议将此作为第二个问题发布,但这多少是我发现的第一个问题的延续

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

像这样:

拉沃伊把所有的工作都放在自己的小床单里。他打算自己手动更新“日期检查员清除”,然后点击一个按钮,然后在通过WO#(总是唯一且从不重复)与母版纸(2018)中的WO#匹配后,将该日期复制粘贴到母版纸中的R列。下面的图片(我不得不屏蔽一些敏感信息——假设它不重要。)

拉沃伊表:

母版纸:

这是我的密码:

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——为什么代码副本不粘贴这些值,为什么它会跳过?

数据从第2行或第3行开始,您开始向字典添加记录,并从第18行开始验证
2018中的记录

将18更改为这些行中的正确行:

For j = 18 To lastRow1
For i = 18 To lastRow2

你应该读书。不知道这是否是问题的原因,但是
Set sh_insp=ActiveSheet
是有风险的,因为当代码运行时,可能是错误的工作表处于活动状态?@SJR,我有另一个宏运行userform并限制访问,因此始终显示正确人员的正确工作表:)。但我会读到的,谢谢你的链接!