【问题标题】:VBA Referring to a cell using Sheet Name not working properlyVBA使用工作表名称引用单元格无法正常工作
【发布时间】:2012-08-25 23:14:57
【问题描述】:

总结:我正在编写一个宏,它从一个 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

【问题讨论】:

  • Activecell 是 Excel 应用程序对象的属性,而不是工作表的属性。它代表当前活动窗口中的活动单元格。
  • +1 像往常一样很好地解释了问题。除了蒂姆/克里斯提到的两件事。 1) ON ERROR RESUME NEXT 把它从你的代码中扔掉。除非您将其用作“主动式”编程,否则应避免使用 OERN。 2)我建议使用这个链接,它解释了如何使用.Find.FindNextsiddharthrout.wordpress.com/2011/07/14/…
  • @SiddharthRout 像往常一样,有用的材料:D +1。查找教程将来对我很有帮助。关于摆脱 OERN,我不确定如果 find 函数没有找到它正在寻找的东西,它仍然会如何工作,但我相信这在你的教程中有所解释:p
  • @MikeKellogg:是的,如 chris 所示的 If 语句 If Not cl Is Nothing Then 并且在博客中也提到了这一点 :)

标签: vba excel


【解决方案1】:

ActiveCellApplication 对象的属性,而不是Sheet

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

目前还不完全清楚您要做什么。但一般而言,您应该避免使用此类代码使用SelectActivate。改用类似的东西:

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
    ' ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多