我对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)
结束功能
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)
包装