【问题标题】:Why I get Error 2042 as Result of VBA Match using Statement as shown in MS documentation为什么我得到错误 2042 作为 VBA 匹配的结果,如 MS 文档中所示
【发布时间】:2019-10-27 10:56:19
【问题描述】:

我有一个带有 2 列 (A+B) 的 Woorsheet (TMP)。在 Col A 中有数字作为字符串,在 Col B 中有数字。现在我尝试获取给定字符串的对应数字。

我已经尝试了很多东西,没有任何帮助。据我了解,匹配语句的代码与 MS 文档中的代码相同。 我什至用 foreach 循环做了同样的事情,它工作得很好,但有点慢。

Public Function SuchenKonto(Konto As String) As Boolean
    Dim ind As Variant
    Dim Rückgabe As Boolean
    Dim Vergl As Variant
    Vergl = Konto
    Rückgabe = False

    ind = Application.Match(Konto, Worksheets("TMP").Columns(1), 0)


    If Not IsError(ind) Then
        Rückgabe = True
        Worksheets("TMP").Range("B" & ind).Copy
        Sheets("Monatsvergleich").Range("AD1").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, Transpose:=False
    End If
    SuchenKonto = Rückgabe

End Function

我可以做些什么来取回正确日期的行索引?

【问题讨论】:

  • 一个函数用于获取结果,而不是复制粘贴。
  • 'a function is used to get results……是什么意思?我对 IF-Block 中的命令没有任何问题。我从匹配函数中得到错误。

标签: excel vba string match


【解决方案1】:

看来 Match-function 的第一个参数必须是 Cell 中的值。在具有匹配功能的行之前添加以下行后

Sheets("TMP").Range("H1").Cells(1, 1).Value = Konto

并将带有匹配功能的行更改为

ind = Application.Match(Sheets("TMP").Range("H1").Cells(1, 1).Value, Workbooks(m_WBKum).Worksheets("TMP").Columns(1), 0 )

它没有进一步的错误。

【讨论】:

    猜你喜欢
    • 2013-03-09
    • 2021-12-01
    • 2021-12-22
    • 2018-02-25
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多