繁体   English   中英

除非我保存工作表,否则Excel宏中的Worksheet_Activate无法运行

[英]Worksheet_Activate in excel macro not functioning unless I save the sheet

我的“主”表中有以下代码。

MsgBox "Code fired"

Sheets("Main").Range("H" & 2) =Sheets("RSP").Cells.SpecialCells(xlLastCell).Row

我的目的是从RSP表中获取最大使用的单元格并将其放在Main表中。这段代码很好,它给了我正确的计数。 但是,该代码仅在我保存工作簿时有效。

例如:我的主页当前显示RSP计数为50,我转到RSP表并在末尾添加新行。 回到主页时,计数增加到51。现在,如果我转到RSP并删除原始数据,然后返回主页,则计数没有减少。 它仍然显示51。如果我保存工作簿,切换到其他工作表并返回到主工作表,则计数会更改。

我尝试将相同的代码放在两个地方,即Main页面的Worksheet_activate和RSP页面的WorkSheet_Deactivate。 但是没有区别。 而且,在所有情况下,消息框都可以正常工作。

您要查找指定列的最后一行还是最后一行? 这都是两个选择。

  Sub FindAnyLstRow()
    Dim ws As Worksheet, MyRng As Range
    Dim sh As Worksheet
    Dim Rws As Long, r As Range, fRng As Range

    Set ws = Worksheets("Main")
    Set MyRng = ws.Range("H2")
    Set sh = Worksheets("RSP")

    With sh
        Set r = .Range("A1")
        Rws = .Cells.Find(what:="*", after:=r, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    End With

    MyRng = Rws

End Sub


And 

    Sub GetLastCellInColumnA()

    Dim ws As Worksheet, MyRng As Range
    Dim sh As Worksheet
    Dim Rws As Long, fRng As Range

    Set ws = Worksheets("Main")
    Set MyRng = ws.Range("H2")
    Set sh = Worksheets("RSP")

    With sh
        Rws = .Cells(Rows.Count, "A").End(xlUp).Row
        Set fRng = .Cells(Rws, 1)
    End With

    MyRng = fRng

End Sub

这可能对您有用。

Sheets("Main").Range("H2") = Sheets("RSP").Cells.Find("*", Range("A1"), xlFormulas, , xlByRows, xlPrevious).Row

现在,进行解释。 如果您想了解它,请完整阅读。

尝试查找工作表中的最后一个单元格(或行,列)时,首先必须确定这是什么意思。

  1. 已使用=非空白,即具有data

  2. Used =“ ...正在使用中,表示包含数据或格式的部分。” 这是保存时Excel使用的标准 另请参见 此标准通常会产生意外的结果,但也可能有意利用(较少地,肯定地)利用它,例如突出显示或打印可能最终没有数据的特定区域。 并且,当然,作为保存工作簿时要使用的范围的标准是合乎需要的。

通常,这两个条件对于最后一个单元格给出的结果相同,这似乎是您的情况。 这在这里这里都涵盖

对于条件1,找到最后使用的像元的许多方法中的三种是:

  1. UsedRange
  2. Ctrl + 结束
  3. SpecialCells(xlLastCell)

方法2和3在添加(数据或格式)超过前一个最后一个单元格时始终更新其目标“最后一个单元格”。 但是他们不会更新其目标“最后一个单元格”,直到您从上一个最后一个单元格中删除(数据和格式)时保存工作簿为止。 方法1无需保存工作簿即可工作。

对于crtierion 2,也有很多方法:

  1. .Find("*", ... (如上所述)。请检查
  2. 等等。

(大多数?)即使不保存工作簿,这些方法也将起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM