Excel VBA:通过隐藏值搜索异常行为

Excel VBA: Unusual behavior searching through hidden values

提问人:Josh Marks 提问时间:11/15/2023 最后编辑:IkeJosh Marks 更新时间:11/15/2023 访问量:43

问:

当我调用此代码时,foundCell 没有返回任何内容,而 rows40-82 是隐藏的。我希望它返回 cells(74, “B”)。

参数:

  • ws = rev-loc 选项卡,有效条目
  • 行 = 77
  • actName = “4100 ·每名学生 设施分配”

在即时窗口中:

  • actString => 每名学生设施分配”
  • actString = ws.cells(74, “B”) => 真
    Private Function GetAccountRange(ws As Worksheet, actName As String, row As Long) As Range
    Dim rowStart As Long, rowEnd As Long, colEnd As Long, actString As String
    Dim foundCell As Range
    
    actString = Right(actName, Len(actName) - InStr(actName, " " & Chr(183) & " ") - 2)
    Set foundCell = ws.Columns("B").Find(actString, after:=ws.Cells(row, "B"), LookIn:=xlValues, _
     LookAt:=xlWhole, MatchCase:=False, SearchDirection:=xlPrevious)
      

Rev-Loc worksheet

它应该返回 cells(74, “B”)。选择:

  • 当我在行 40-82 可见的情况下运行该函数时,它的行为符合我的预期
  • 当我运行在第 73 行而不是第 74 行中传递的函数时,它的行为符合我的预期

提前致谢! 乔希

Excel VBA

评论

2赞 Darren Bartrup-Cook 11/15/2023
尝试在隐藏的单元格上执行查找中的答案之一。它使用值或将值传递到数组中以避免该问题。Application.WorksheetFunction.MatchFind
1赞 FaneDuru 11/15/2023
如果相应字符串所在的行大于 74,则应使用 代替 。这是之后的搜索方向(不包括在搜索范围内),以获取相应字符串的第一次出现。如果可能出现更多情况并且您需要所有这些事件,则应使用循环(首先记住第一个找到的单元格地址,并在返回循环时对循环进行条件处理)。SearchDirection:=xlNextSearchDirection:=xlPreviousws.Cells(row, "B")

答: 暂无答案