上一个活动单元格行

时间:2015-02-09 11:30:36

标签: excel vba excel-vba row

我对VBA代码上的“ActiveCell.Row”命令有困难,我知道它必须是一个简单的修复,但我做了一些研究,但没有找到我的问题的答案。

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

示例:如果我编辑单元格“B2”并按Enter键,它将返回B3行,因为这将是代码运行时的当前活动单元格。如果我按Tab键,则返回正确的数字,即“2”,因为活动单元格将为“C2”。如果我按向上箭头,则返回行“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

2 个答案:

答案 0 :(得分:0)

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

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

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

通过这种方式,您可以确定更改后的单元格的行号以及更改后活动单元格的行号。

答案 1 :(得分:0)

感谢Paul KellyRory

的评论

我已经更改了线路&#34; a = ActiveCell.Row - 5&#34;到&#34; a = Alvo.Row - 5&#34;现在它完美无缺!对不起新手问题,但我真的很挣扎。

谢谢!

相关问题