【问题标题】:VBA Match and Find Error: No matching type & Undefined ErrorVBA 匹配和查找错误:没有匹配类型和未定义错误
【发布时间】:2016-07-07 21:27:01
【问题描述】:

代码

    n = Worksheets("Datasheet").UsedRange.Rows.count
    For l = 2 To k
        check = Application.Find(Worksheets("AFAS Dump").Cells(l, 1), Worksheets("Datasheet").Range("K4:K10000000"))
        If check = 0 Then
        Cells(n + 1, 1) = Worksheets("AFAS Dump").Cells(l, 13)
        End If
    Next l

AFAS 转储列 1 包含一定数量的 nr。数据表还包含一定数量的 nr。我想检查来自 AFAS 转储的 nr 是否也在数据表中。如果不是,我想将该 nr 添加到数据表中。我想使用 Match 或 Find 但它们都给我带来了问题。

另一件事是我的 K10000000,我希望通过参数更改 nr,但我注意到这不起作用。我更喜欢 Ke,其中 e 将被分配一个值。

【问题讨论】:

    标签: vba error-handling macros find match


    【解决方案1】:

    有点不清楚您要实现的目标是什么,因为如果您尝试添加到 Column K,其中一行没有任何意义,因此您在其中一个行中引用了 Column 13。如果您希望宏检查“AFAS 转储”表中 Column 1 中的数字是否在“数据表”的 Column K 中,如果它不存在则将其添加到“数据表”的底部,然后试试这个:

    n = Worksheets("Datasheet").Cells(Rows.Count,11).End(xlup).Row
    e = Worksheets("AFAS Dump").Cells(Rows.Count,1).End(xlup).Row
    For l = 2 To e
        If Worksheetfunction.Match(Worksheets("AFAS Dump").Cells(l, 1), _
        Worksheets("Datasheet").Range("K4:K" & n),0) = 0 Then
            Worksheets("Datasheet").Cells(n + 1, 11) = Worksheets("AFAS Dump").Cells(l, 1)
            n = n + 1
        End If
    Next l
    

    【讨论】:

    • 是的,你是对的,13 必须是 1。如果我找到一个不在“数据表”中但在“AFAS 转储”中的 nr,我想将其添加到“数据表”的第 1 列。明天试试你的代码。已经感谢您的帮助。
    猜你喜欢
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多