У меня возникают трудности с командой «ActiveCell.Row» в коде VBA, я знаю, что это должно быть простое исправление, но я провел некоторое исследование и не нашел ответа на мой проблема.Последняя активная строка ячейки
Код ниже получает номер строки следующей активной ячейки, а не ячейку, которую я редактировал.
Пример: Если я отредактирую ячейку «B2» и нажмите «Ввод», она вернет строку B3, потому что это будет текущая активная ячейка при запуске кода. Если я нажимаю вкладку, она возвращает правое число, которое равно «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
'Alvo' - это ячейка (я), которая была/была изменена, поэтому вы должны использовать это, а не' activecell' – Rory
'Alvo' - это диапазон ячейки, которую вы изменили. Поэтому используйте 'Alvo.Row', чтобы получить строку. –
Удивительный чувак! я изменил линию = ActiveCell.Row а - 5 к а = Alvo.Row - 5 И теперь он отлично работает! Извините за вопрос новичков, но я действительно боролся с этим. Большое спасибо! –