Excel VBA-код для изменения ячейки, если строка была отредактирована - PullRequest
0 голосов
/ 08 ноября 2019

Я выполняю некоторую работу по проверке данных и, в основном, всякий раз, когда я изменяю строку в данных, мне также нужно написать «Да» в J-столбце на той же строке. Я полагал, что это должно быть автоматизировано, но у меня были некоторые проблемы с кодом.

Что я хочу сделать, так это проверить наличие изменений в строках CH, и есть ли цифра (0-99) на B-column, затем замените текст в столбце J той же строки на «Да» (без кавычек). «Цифровая» часть может быть сокращена до длины 1-2 (не 0 и не более) в этом случае.

Вот что у меня есть до сих пор, но я не могу понять, каксделать комбинацию абсолютной и относительной ссылки, то есть «проверить B активной строки» или «изменить J активной строки» (то есть, ни один из кодов, которые я пробовал до сих пор, не был действительным в соответствии с VBA; У меня очень мало опыта работы с VBA, поэтому этот код кажется мне чуждым):

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("C:H")) Is Nothing Then Exit Sub
        If Not Len("B" & ActiveCellRow) = "1" Then
        If Not Len("B" & ActiveCellRow) = "2" Then
        Exit Sub
    End If
    With Application
    .EnableEvents = False
    .ScreenUpdating = False
        "J" & ActiveCellRow = "Yes"
    .EnableEvents = True
    .ScreenUpdating = True
End With

1 Ответ

1 голос
/ 08 ноября 2019

Вы можете сделать что-то вроде этого:

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim rng As Range, c As Range, v

    'in our range of interest?
    Set rng = Application.Intersect(Target, Me.Range("C:H"))

    If Not rng Is Nothing Then
        'get the corresponding cells in ColB
        For Each c In Application.Intersect(rng.EntireRow, Me.Range("B:B")).Cells
            v = c.Value
            'flag required?
            If Len(v) > 0 And Len(v) < 3 And IsNumeric(v) Then
                c.EntireRow.Cells(1, "J").Value = "Yes"
            End If
        Next c
    End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...