上次激活的单元格行

我对VBA代码中的“ActiveCell.Row”命令有困难,我知道它一定是一个简单的修复,但我已经做了一些研究,没有find我的问题的答案。

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

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

我感谢您的帮助! 谢谢! (PS我已经尝试了这里给出的解决scheme和我发现的其他一些解决scheme,但没有成功)

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 选项中,光标在单元格中input数据后向下移动。
如果我安装:

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

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

这样,您可以确定更改后的单元格的行号和更改后的活动单元格的行号。

感谢Paul Kelly和Rory的评论

我已经把“a = ActiveCell.Row – 5”这一行改为“a = Alvo.Row – 5”,现在它完美的工作了! 对不起新手问题,但我真的很挣扎。

谢谢!