在我的工作簿中,我经常需要使用它们来激活一些工作表CodeName then 搜索一些文本在那张纸上和使用单元格的行号或列号其中包含我正在寻找的文本。
在这种情况下,我使用以下代码:
Sheet16.Select '(Using codename)
Cells.Find(What:="FIRST TEXT I'M LOOKING FOR", After:= _
ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
FirstRow= ActiveCell.Row
Cells.Find(What:="SECOND TEXT I'M LOOKING FOR", After:= _
ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
SecondRow = ActiveCell.Row
Rows(FirstRow & ":" & SecondRow + 1).EntireRow.Hidden = False
一切都运行良好,但现在我正在尝试改进我的代码,并且我想更快地运行我的代码。
Now,
1- 如何轻松引用我的工作表的 CodeName?
(我正在寻找像 ThisWorkbook.Worksheets("Sheet1") 这样的答案 - 不是一个函数
Dim wb as Workbook, ws as Worksheet
set wb = ThisWorkbook
set ws = wb.CodeName(Sheet16) or wb.Sheet16 or sheet16
'then
ws.Cells.Find(What .......... rest of the code ...... )
他们都不为CodeName
财产。按代号完全引用工作表 or 使用 VBA 按代号引用另一个工作簿中的工作表没有回答我的问题。
2-我怎样才能避免使用。启用使用结果单元格单元格.Find()公式。
再次在该示例中,我首先搜索特定文本,即:=“我正在寻找的第一个文本”在我的代码的第一部分,然后我需要使用该单元格来获取它行号 or use offset or anything,正因为如此,我觉得自己有义务使用。启用因为,
FirstRow = Cells.Find(What:="FIRST TEXT I'M LOOKING FOR", After:= _
ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Row
类型的代码也不能正常工作。如何避免在 Excel VBA 宏中使用 Select在这个答案中有几个建议,但在这种情况下它们都没有帮助我。我试图从这个答案的所有者那里得到答案,以避免任何重复的问题,但他建议我问一个新问题。(只要我的两个问题都属于我的示例代码并且我会将它们连接起来,我就会在一个问题中将它们一起问。)