我对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
答案 0 :(得分:0)
在我的Excel 选项中,在单元格中输入数据后光标向下移动。
如果我安装:
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox Target.Row
MsgBox ActiveCell.Row
End Sub
并编辑单元格 B9,第一个输出将 9 但第二个输出将 10。
通过这种方式,您可以确定更改后的单元格的行号以及更改后活动单元格的行号。
答案 1 :(得分:0)
我已经更改了线路&#34; a = ActiveCell.Row - 5&#34;到&#34; a = Alvo.Row - 5&#34;现在它完美无缺!对不起新手问题,但我真的很挣扎。
谢谢!