【发布时间】:2021-07-07 19:18:28
【问题描述】:
我尝试实现this,但我遇到了编译器错误(“错误的限定”或类似的东西,它不是我拥有的英文版 Excel)。我想这与范围/字符串有关?
Function SearchForTotal(givenLocation As Range, searchText As String) As Range
Debug.Print givenLocation 'gives $U$83
Dim startSearchFrom As String
'-1 because it's from previous column you'll be searching in
startSearchFrom = givenLocation.Offset(0, -1).Address
Debug.Print startSearchFrom
Dim i As Integer: i = startSearchFrom.Row
Do While i > 0
If (searchText = ThisWorkbook.Sheets("Sheet1").Range(startSearchFrom.column & i).Value) Then
Set SearchForTotal= Range(startSearchFrom.column & i)
Exit Do
End If
i = i - 1
Loop
End Function
错误来自“Dim i As Integer: i = startSearchFrom.Row”行
我还尝试将变量 startSearchFrom 作为 range 而不是 string(然后使用 Set),但是使用此代码我也有编译器错误(“类型不匹配”)。
【问题讨论】:
-
尝试将“Dim i As Integer: i = startSearchFrom.Row”分成不同的行: Dim i As Integer i = startSearchFrom.Row 会发生什么?
-
startSearchFrom是一个字符串,所以它不能有.Row或.Column属性。这将始终返回错误。另外,如果i>32767你会得到一个溢出错误,并且可以有比工作表上更多的行。 -
您已经提供了指向您之前 Q 的链接,但没有遵循您接受的 A 中给出的建议。回去重读 A,并在这里应用它的建议
-
@chrisneilsen 我知道这与 Range & 字符串类型有关,但无法单独解决,抱歉