如何找到列中第n个出现的值

问题描述 投票:0回答:1

我对vba进行了改进,以使其更容易理解。现在,当我运行它时,我得到“设置rFound = Range_Look.Find(Find_It,rFound,xlValues,xlPart)”处的“运行时错误13:类型不匹配”

Sub Macro1()''Macro1宏''键盘快捷键:Ctrl + p

Dim Range_Look As Range
Dim a As Variant


Windows("Savings Details.xlsm").Activate
Sheets("Table Sort").Select

Set Range_Look = Range("K4:K34")                 'The worksheet has already been selected

a = Nth_Occurrence(Range_Look, "bankacct20", 2, 1)

'功能:将范围添加为参数结束子

函数Nth_Occurrence(范围为范围,Find_It为字符串,发生时间为长,偏移行为长度)

Dim lCount只要长昏暗rFound为范围

Set rFound = Range_Look


    For lCount = 1 To Occurrence

        Set rFound = Range_Look.Find(Find_It, rFound, xlValues, xlPart)

    Next lCount

Nth_Occurrence = rFound.Offset(Offset_Row)

结束功能

excel vba
1个回答
0
投票
您需要将Range参数添加到函数签名中。

Dim Range_Look As Range Range_Look = ActiveSheet.Range("K4:K31") 'The worksheet has already been selected ActiveCell.Value = Nth_Occurrence(Range_Look, bankacctA, 2, 1) 'Function: Add the Range as a paramter Public Function Nth_Occurrence(Range_Look As Range, Find_It As String, Occurrence As Long, Offset_Row As Long) Dim lCount As Long Dim rFound As Range Set rFound = Range_Look For lCount = 1 To Occurrence Set rFound = Range_Look.Find(Find_It, rFound, xlValues, xlWhole) Next lCount Nth_Occurrence = rFound.Offset(Offset_Row) End Function

现在,当您收到by ref错误时,这是​​因为您传入的是一个变体,其中为参数bankacctA声明了一个字符串(至少在提供示例中)。您需要声明Dim bankacctA as String或使用强制转换CStr(bankacctA)包装
© www.soinside.com 2019 - 2024. All rights reserved.