最后一个活动单元格行

Last active cell row

我在 VBA 代码上使用 "ActiveCell.Row" 命令时遇到困难,我知道这一定是一个简单的修复,但我做了一些研究但没有找到答案我的问题。

下面的代码获取下一个活动单元格的行号,而不是我编辑过的单元格。

示例:如果我编辑单元格 "B2" 并按回车键,它会 returns B3 行,因为代码运行时那将是当前活动单元格。如果我按 Tab,它 returns 正确的数字是“2”,因为活动单元格将是 "C2"。如果我按向上箭头 returns 行“1”,因为活动单元格将是 "B1".

感谢您的帮助!谢谢! (P.S。我尝试了给定的解决方案 here 和我找到的其他一些解决方案,但没有成功)

Private Sub Worksheet_Change(ByVal Alvo As Range)
    Dim limite_maximo As Integer
    limite_maximo = 1000
    If Alvo.Cells.Count > 1 Or IsEmpty(Alvo) Then Exit Sub

    If Alvo.Column = 2 And Alvo.Row >= 1 And Alvo.Row <= limite_maximo Then
        Application.EnableEvents = False
        a = ActiveCell.Row - 5
        b = 10
        Alvo.Offset(0, 2).Value = b
        Alvo.Offset(0, 3).Value = a
        Alvo.Offset(0, 4).Value = b & "." & Format(a, "000000")
        Application.EnableEvents = True
    End If

End Sub

在我的Excel选项中,光标在单元格中输入数据后向下移动。
如果我安装:

Private Sub Worksheet_Change(ByVal Target As Range)
    MsgBox Target.Row
    MsgBox ActiveCell.Row
End Sub

并编辑单元格 B9, 第一个输出将是 9 但第二个输出将是 10.

这样您就可以确定被更改的单元格的行号以及更改发生后活动单元格的行号。

收到了,感谢Paul Kelly and Rory

的评论

我已将行 "a = ActiveCell.Row - 5" 更改为 "a = Alvo.Row - 5",现在可以完美运行了!很抱歉这个新手问题,但我真的很纠结这个问题。

谢谢!