Сохранение первого формата строки после выбора других активных ячеек - PullRequest
0 голосов
/ 11 марта 2020

В настоящее время код всегда выбирает столбец «A» активной строки при выборе любой активной ячейки, кроме строки 1, и временно переименовывает эту ячейку столбца A в «Мой диапазон». Это то, чего достигают первые несколько строк, после чего я пытаюсь выделить любую активную строку после строки 2 и очистить выделение, когда выбрана другая активная строка.

Кажется, есть проблема при выборе другой активной строки, так как предыдущая строка не очищает окраску.

Так что в примере я выбрал Тест 1 (Строка 3 - Активная Строка):

enter image description here

При выборе другой активной строки, например, теста 2 (строка 4 теперь является активной строкой), активная строка окрашивается, но ранее окрашенная строка 3 по-прежнему окрашена в

enter image description here

Каждый раз, когда я выбираю другую активную строку, предыдущая строка не очищает ее цвет, и я хочу сохранить любая раскраска в строке 1 (черная заливка в столбце I1), это то, что я хочу, чтобы вывод был похож, когда я выбираю другую активную строку, поэтому в этом случае я тест 1 был активной строкой (строка 3), но когда я выбрав Тест 2 (Строка 4) в качестве активной Строки, Строка 3 очищает ее окраску следующим образом:

enter image description here

Вот весь код, который я запускаю :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    Application.ScreenUpdating = False                                                          'This speeds up the macro by hiding what the macro is doing

        If Target.Row > 1 Then

        ActiveWorkbook.Names.Add Name:="MyRange", RefersToR1C1:=Range("A" & (ActiveCell.Row))   'Defines the name of the ActiveCell as "MyRange" to Autofill VLookup Formula on sheet

        Range("A" & (ActiveCell.Row)).Select                                                    'Always Selects Column A depending on the Active Row selecte

        Dim TR As Variant

        TR = Target.Row > 2

        With TR                                                                                 'With Target refers to the Active Row being selected greater than Row 2

        Target.EntireRow.Interior.ColorIndex = 0                                                'Clears Previous Cells Interior Color

        Target.EntireRow.Interior.Color = RGB(243, 243, 123)                                    'Highlights the entire row that contain the active cell

        End With

        If Target.Address = "$A$2" Then                                                         'Checks if you have selected Row 2 (The comparison row)

            Target.Value = ""                                                                   'If Cell A2 is selected (the "Key" comparison cell from the comparison row) then a blank value is inputted

        Else

            [a2] = ActiveCell                                                                   'Makes cell "A2" equal to the Active Cell value (The "Key" in this case)

        End If

    End If

    Application.ScreenUpdating = True                                                           'Must be "True" after running the code to be able to Read/Write the Workbook

End Sub

1 Ответ

1 голос
/ 11 марта 2020

Попробуй это. Не совсем уверен, что вы делаете, но это должно очистить предыдущую строку, если выбрана ячейка в строке 3 вниз.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Application.ScreenUpdating = False                                                          'This speeds up the macro by hiding what the macro is doing

If Target.Row > 1 Then                                                         'Doesn't Allow the "Titles" in Row 1 to be highlighted or changed
    ActiveWorkbook.Names.Add Name:="MyRange", RefersToR1C1:=Range("A" & (Target.Row))   'Defines the name of the ActiveCell as "MyRange" to Autofill VLookup Formula on sheet
    ActiveSheet.UsedRange.Offset(1).EntireRow.Interior.ColorIndex = 0    
    Target.EntireRow.Interior.Color = RGB(243, 243, 123)                                                                             'With Target refers to the Active Row being selected                                             'Highlights the entire row that contain the active cell

    If Target.Address = "$A$2" Then                                                         'Checks if you have selected Row 2 (The comparison row)
        Target.Value = ""                                                                   'If Cell A2 is selected (the "Key" comparison cell from the comparison row) then a blank value is inputted
    Else
        [a2] = Target                                                                  'Makes cell "A2" equal to the Active Cell value (The "Key" in this case)
    End If

    Me.Range("B2:CK2").Interior.Color = xlNone                                              'Clears any previous (if any) colouring inside cells

    Dim rng As Range                                                                        'Declares variable as a range to store values

    For Each rng In Me.Range("D2:CK2")                                                      'Declares which columns to highlight yellow if there are any parameters in Sheet 2 that vary from Sheet 1
        If IsNumeric(rng.Value) And IsNumeric(Me.Cells(Target.Row, rng.Column)) Then        '[Exludes the Key, Date, Time & Part columns: hence starting at Column D for highlighting variances]
            If rng.Value <> Me.Cells(Target.Row, rng.Column).Value Then                     'Checks if the parameters vary from the main Database ("HE 171")
                rng.Interior.Color = vbYellow                                               'Highlights any varying parameters in Yellow
            End If
        End If
    Next
End If

Application.ScreenUpdating = True                                                           'Must be "True" after running the code to be able to Read/Write the Workbook

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