excel - Application.WorksheetFunction.Match 方法

标签 excel vba

我看过很多关于“无法获取 Worksheetfunction 类的匹配属性”问题的主题。但我无法修复我的代码。

为什么这段代码不起作用?

rowNum = Application.WorksheetFunction.Match(aNumber, Sheet5.Range("B16:B615"), 0)

但是再往上几行,这段代码就可以工作了:

rowNum2 = Application.WorksheetFunction.Match(originCode, Sheet7.Range("B10:B17"), 0)

我的两行之间的唯一区别是,在 rowNum2 中我使用字符串进行查找,而在 rowNum 中使用整数。 查找值是否可能需要是字符串?

@更新我的问题

Select Case service
Case "Low Cost"
MsgBox Sheet5.Cells(16, "B") 'Gets value 0.5
Set Rng = Sheet5.Range("B16:B615")

   If Not IsError(Application.Match("0.5", Rng, 0)) Then 'But jumps to Else
    rowNum = Application.Match(Weight, Rng, 0) 'Weight = 0.5
    MsgBox rowNum
Else
    MsgBox "error"
End If

Case "Standard"

Case "Express"

Case Else

End Select

@更新2

!!!注意“0.5”是一个字符串而不是 0.5 所以 0.5 不是“0.5”(这是我在代码中的错误)

最佳答案

您收到此错误是因为在范围内找不到该值。字符串或整数并不重要。根据我的经验,最好的办法是首先检查该值是否存在。

我在下面使用了 CountIf,但是有很多不同的方法可以检查某个范围内的值是否存在。

Public Sub test()

Dim rng As Range
Dim aNumber As Long

aNumber = 666

Set rng = Sheet5.Range("B16:B615")

    If Application.WorksheetFunction.CountIf(rng, aNumber) > 0 Then

        rowNum = Application.WorksheetFunction.Match(aNumber, rng, 0)

    Else
        MsgBox aNumber & " does not exist in range " & rng.Address
    End If

End Sub

替代方式

Public Sub test()
    Dim rng As Range
    Dim aNumber As Variant
    Dim rowNum As Long

    aNumber = "2gg"

    Set rng = Sheet5.Range("B1:B20")

    If Not IsError(Application.Match(aNumber, rng, 0)) Then
        rowNum = Application.Match(aNumber, rng, 0)
        MsgBox rowNum
    Else
        MsgBox "error"
    End If
End Sub

或者

Public Sub test()
    Dim rng As Range
    Dim aNumber As Variant
    Dim rowNum As Variant

    aNumber = "2gg"

    Set rng = Sheet5.Range("B1:B20")

    rowNum = Application.Match(aNumber, rng, 0)

    If Not IsError(rowNum) Then
        MsgBox rowNum
    Else
        MsgBox "error"
    End If
End Sub

关于excel - Application.WorksheetFunction.Match 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20214540/

相关文章:

excel - 使用查询选择器从 VBA 中抓取

vba - 在Excel中复制格式的快速方法

vba - 如何在 Excel 中的页眉/页脚中添加 & 符号?

VBA如何使用字典

excel - 保存特定单元格的地址以便以后更改它们

excel - 为什么excel会在这里崩溃?

vba - 循环遍历工作表 2 并将特定值复制到工作表 1 上的指定列

excel - VSTO Excel 工作簿加载项未通过 1 台计算机上的 Visual Studio 调试器加载

vba - 其他语句混淆

vba - Excel VBA 代码无法打开名为 "CON.txt"的文件