要搜索,匹配和粘贴的VBA字典:未知错误

时间:2018-05-10 14:54:42

标签: excel-vba error-handling vba excel

好的,所以我从here中提取了这段代码,并且一直在努力调整它,但收效甚微。我可能只是误解了原文或者遗漏了一些其他的基本缺陷(比如代码是为excel的旧迭代编写的)。

我有一张主表(2018),其中包含许多不同的行,并为检查员分配了不同的任务。每个任务在G列中都有一个唯一的数字,检查员可以有多个任务 - 但没有任务有多个检查员。 G列是唯一的 - 数字不重复。每个检查员都有他/她自己的工作表,使用不同的Excel更新 - 检查员工作表的格式与主工作表完全相同,所有列都相同。检查员将在他们自己的表格中填写日期,任务完成(日期在R栏),我试图使用此代码,以便当检查员完成任务并输入日期时,单击一个按钮,该日期将复制到主工作表中与正确任务编号匹配的正确行中的R列。

像这样: copyPaste

我使用此代码来处理使用索引匹配或vlookup等公式(太多数据和工作簿设计用于不知道如何在新记录时拖动公式的个人添加)。

Sub dates()

Application.ScreenUpdating = False

Dim AVals As New 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 Then AVals.Add MyName, .Cells(j, 7).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

我获得了未定义的用户定义类型'在Dim AVals as New Dictionary,这使我无法真正看到它是否有效。此外,有时尚未分配任务,您已分配但未完成任务。我不希望它删除任何人的数据,只在匹配任务编号时添加数据。这有意义吗?

0 个答案:

没有答案