Как заблокировать определенные ячейки в строке на основе раскрывающегося списка в Excel

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

Так, например, A5 выбран как «Toyota», что означает, что только E5 в пятой строке будет редактируемым, поскольку форматирование в A5 соответствует E2.

Скрин ячеек:

введите здесь описание изображения


person Cael Prussian    schedule 30.07.2012    source источник


Ответы (1)


Вы можете использовать событие Change для изменения свойства Locked ячеек, что-то вроде этого

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rw As Range, rHdr As Range, cl As Range

    Me.Unprotect
    If Target.Column = 1 Then
        Set rHdr = Me.UsedRange.Rows(1)

        For Each rw In Target.Rows
            If rw.Cells(1, 1) <> "" Then
                For Each cl In rHdr.Cells
                    Me.Cells(rw.Row, cl.Column).Locked = Not (cl.Value Like rw.Cells(1, 1) & "*")
                Next
            Else
                rw.Locked = True
            End If
            rw.Cells(1, 1).Locked = False
        Next
    End If
    Me.Protect
End Sub
person chris neilsen    schedule 30.07.2012
comment
UsedRange начинается с первой использованной строки, а не с A1, поэтому в данном конкретном случае UsedRange.Rows(2) будет строкой 3... - person Tim Williams; 30.07.2012