Mik*_*ogg 2 excel vba excel-vba
简介:我正在编写一个宏,它从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
Run Code Online (Sandbox Code Playgroud)
ActiveCell是Application对象的属性,而不是Sheet.
只有一个ActiveCell,它是当前活动工作表上的活动单元格.
目前还不完全清楚你要做什么.但一般而言,您应避免Select与Activate有这种代码.使用相反的东西:
Dim wsMasterList as Worksheet
Set wsMasterList = Thisworkbook.WorkSheets("MasterList") ' assuming the vba code is in the workbook containing MasterList
Run Code Online (Sandbox Code Playgroud)
要跟踪MasterList中最后使用的单元格,请使用类似的变量
Dim rMasterList as Range
Set rMasterList = wsMasterList.Cells( ... ' Specify the cell you want
Run Code Online (Sandbox Code Playgroud)
然后用于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
' ...
Run Code Online (Sandbox Code Playgroud)