【发布时间】:2015-06-13 02:50:37
【问题描述】:
我的“主要”工作表中有以下代码。
MsgBox "Code fired"
Sheets("Main").Range("H" & 2) =Sheets("RSP").Cells.SpecialCells(xlLastCell).Row
我的目的是从 RSP 表中获取最大使用的单元格并将其放入主表中。这段代码很好,它给了我正确的计数。 但是,代码只有在我保存工作簿时才有效。
例如: 我的主页目前显示 RSP 上的计数为 50,我转到 RSP 表并在末尾添加一个新行。当我回到主页时,计数增加到 51。现在,如果我去 RSP 并删除一个 raw,然后返回主页,计数并没有减少。它仍然显示 51。如果我保存工作簿、切换到其他工作表并返回主工作表,计数会发生变化。
我尝试将相同的代码放在两个地方,即主页的 Worksheet_activate 和 RSP 页面的 WorkSheet_Deactivate。但没有区别。而且,在所有情况下,消息框都在工作。
【问题讨论】:
-
SpecialCells(xlLastCell)遇到与UsedRange相同的问题,众所周知是有问题的。不要使用它。在 SO 上的答案中还有多种其他方法。哪一种适合您取决于您的具体要求。 -
@chrisneilsen - 关于要求保存工作簿以提供正确结果的问题适用于
SpecialCells(xlLastCell),但不适用于UsedRange。请参阅下面的答案,以及*.com/a/27637752/2707864 以获取更多信息。 -
您发现发布的内容有用吗?请发表反馈意见。
-
是的,代码更改如下,它适用于每个 activesheet.deactivate() Sheets("Main").Range("I" & 2) = (Range( "I" & Rows.Count).End(xlUp).Row - 1)