Как получить номер строки из цели во время события Worksheet_Change? - PullRequest
0 голосов
/ 18 июня 2019

У меня есть следующий бит кода, который обнаруживает, что значение ячейки изменилось. Я хочу знать, к какой строке принадлежит ячейка.

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

    ' The variable KeyCells contains the cells that will
    ' cause an alert when they are changed.

    Set KeyCells = Range("F2:F20")

    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then
        MsgBox "Last Contact Date " & Target.Address & " has changed."
        Set Row_number = ???????

    End If

End Sub

Ответы [ 2 ]

1 голос
/ 18 июня 2019
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

    ' The variable KeyCells contains the cells that will
    ' cause an alert when they are changed.

    Set KeyCells = Range("F2:F20")

    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then
        MsgBox "Last Contact Date Row: " & Target.Row & " Column: " & Target.Column & " has changed."
        'Set Row_number = ???????

    End If
End Sub
1 голос
/ 18 июня 2019

Его можно извлечь из переменной Target , которая является диапазоном , из которого вы можете получить много информации, включая строку. В вашем случае это будет выглядеть так:

ОБНОВЛЕНО для защиты от возможности пользователя, имеющего более одной строки. Пара предложений о том, что делать.

If Target.Rows.Count > 1 Then
    'do nothing

    'or
    MsgBox "You messed up by selecting " & Target.Rows.Count & " rows!!!", _
    vbCritical, "Come on!"

    'or
    Row_Number = Target.Cells(1, 1).Row 'this will return the top row selection


Else
    'when one row
    Row_Number = Target.Row

End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...