2

摘要:我正在编写一个宏,它从 excel 文件中的许多不同工作表中获取名称并将它们一起编译到“主列表”中,但是我在引用另一个工作表上的单元格时遇到了麻烦。

问题:当我使用工作表名称作为参考来引用特定单元格时Sheets("MasterList").ActiveCell.Offset(0, 1),没有任何内容被拾取。但是,当我删除Sheets("MasterList")宏时工作正常(宏当前在“MasterList”上,这是唯一可行的方法)。此外,我的代码中工作表名称的拼写是正确的。

问:为什么会这样?代码背后的逻辑似乎很合理,而且我的工作表名称拼写正确。

代码:

Do              

   If Sheets("MasterList").ActiveCell.Offset(0, 1) = firstName Then        'IF FIRST AND LAST NAMES MATCH, EXIT THE CHECK

          Exit Do

   End If

   On Error Resume Next

   Cells.Find(What:=lastName, After:=ActiveCell, LookIn:=xlFormulas, _
   LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
   MatchCase:=False, SearchFormat:=False).Activate

Loop Until Err.Number > 0
4

1 回答 1

5

ActiveCellApplication对象的属性,而不是Sheet.

只有一个ActiveCell,它是当前活动工作表上的活动单元格。

目前尚不清楚您要做什么。但总的来说,您应该避免Select使用Activate这种代码。使用类似的东西:

Dim wsMasterList as Worksheet
Set wsMasterList = Thisworkbook.WorkSheets("MasterList")  ' assuming the vba code is in the workbook containing MasterList

要跟踪 MasterList 中最后使用的单元格,请使用类似的变量

Dim rMasterList as Range
Set rMasterList = wsMasterList.Cells( ...  ' Specify the cell you want

然后用于rMasterList.Offset(0, 1)引用相对于该单元格的单元格

在 MasterList 上搜索使用:

Dim cl as Range
Set cl = wsMasterList.UsedRange.Find( ... )
If Not cl Is Nothing Then
    ' cl will be Nothing if the search term is not found
    ' ...
于 2012-08-25T23:51:22.087 回答