Помогите пожалуйста вроде ответа на форуме не нашел. В таблице есть ячейки желтого цвета именно в эти ячейки сотрудник должен вносить информацию, как сделать так чтобы он не смог изменить их цвет? притом защита листа на всех ячейках кроме желтых уже стоит ( в примере пароль 1)
Помогите пожалуйста вроде ответа на форуме не нашел. В таблице есть ячейки желтого цвета именно в эти ячейки сотрудник должен вносить информацию, как сделать так чтобы он не смог изменить их цвет? притом защита листа на всех ячейках кроме желтых уже стоит ( в примере пароль 1)Lexaarni777
Ячейки вне таблицы не защищены. Защитите все ячейки на листе. Выделите весь лист - поставьте галочку защищаемой ячейки, выделите жёлтые ячейки - снимите с них галочку защищаемой ячейки. При защите листа снимите галочку "выделение заблокированных ячеек" и включите защиту. Можно будет выделять ячейки только жёлтого цвета, а следовательно цвет ячейки при копировании и вставке будет жёлтый. при внесении данных в другие ячейки нужнобудет снимать защиту.
Цитата
если вставить в нее данные,
Если только копированием.
Ячейки вне таблицы не защищены. Защитите все ячейки на листе. Выделите весь лист - поставьте галочку защищаемой ячейки, выделите жёлтые ячейки - снимите с них галочку защищаемой ячейки. При защите листа снимите галочку "выделение заблокированных ячеек" и включите защиту. Можно будет выделять ячейки только жёлтого цвета, а следовательно цвет ячейки при копировании и вставке будет жёлтый. при внесении данных в другие ячейки нужнобудет снимать защиту.
Ячейки вне таблицы не защищены. Защитите все ячейки на листе. Выделите весь лист - поставьте галочку защищаемой ячейки, выделите жёлтые ячейки - снимите с них галочку защищаемой ячейки. При защите листа снимите галочку "выделение заблокированных ячеек" и включите защиту. Можно будет выделять ячейки только жёлтого цвета, а следовательно цвет ячейки при копировании и вставке будет жёлтый. при внесении данных в другие ячейки нужно будет снимать защиту.
У меня уже защищены все ячейки от изменений кроме желтых (их мне надо оставить незащищенными для заполнения (но в тоже время чтобы цвет нельзя было изменить))
Ячейки вне таблицы не защищены. Защитите все ячейки на листе. Выделите весь лист - поставьте галочку защищаемой ячейки, выделите жёлтые ячейки - снимите с них галочку защищаемой ячейки. При защите листа снимите галочку "выделение заблокированных ячеек" и включите защиту. Можно будет выделять ячейки только жёлтого цвета, а следовательно цвет ячейки при копировании и вставке будет жёлтый. при внесении данных в другие ячейки нужно будет снимать защиту.
У меня уже защищены все ячейки от изменений кроме желтых (их мне надо оставить незащищенными для заполнения (но в тоже время чтобы цвет нельзя было изменить))Lexaarni777
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("тут_диапазон_желтых_ ячеек")) Is Nothing Then 'тут закрашивание желтых ячеек в желтую заливку End If End Sub
[/vba]
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("тут_диапазон_желтых_ ячеек")) Is Nothing Then 'тут закрашивание желтых ячеек в желтую заливку End If End Sub
Понятно что если копировать с другого листа и вставить на этот лист, формат изменится., можно макросом восстанавливать формат этих ячеек, как уже было предложено. От копирования думаю по другому не избавиться.
Понятно что если копировать с другого листа и вставить на этот лист, формат изменится., можно макросом восстанавливать формат этих ячеек, как уже было предложено. От копирования думаю по другому не избавиться.gling
Попробовал на защищённом листе цвет заливки поменять на открытых ячейках - не даёт, или сегодня звёзды не так сошлись. В связи с чем костыли наваял [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim clr Dim rng1 As Range
If Target.Cells.Count <> 1 Then Application.Undo: Exit Sub Set rng1 = Union(Range("B9:C10"), Range("E9:AK10")) Application.EnableEvents = False
If Intersect(rng1, Target) Is Nothing Then Application.Undo Application.EnableEvents = True Exit Sub End If clr = Cells(3, 8).Interior.Color Target.Interior.Color = clr Application.EnableEvents = True
End Sub
[/vba]
правда целенаправленно залить ячейки можно, зато копипастом не выйдет.
Попробовал на защищённом листе цвет заливки поменять на открытых ячейках - не даёт, или сегодня звёзды не так сошлись. В связи с чем костыли наваял [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) Dim clr Dim rng1 As Range
If Target.Cells.Count <> 1 Then Application.Undo: Exit Sub Set rng1 = Union(Range("B9:C10"), Range("E9:AK10")) Application.EnableEvents = False
If Intersect(rng1, Target) Is Nothing Then Application.Undo Application.EnableEvents = True Exit Sub End If clr = Cells(3, 8).Interior.Color Target.Interior.Color = clr Application.EnableEvents = True
End Sub
[/vba]
правда целенаправленно залить ячейки можно, зато копипастом не выйдет. Udik
Lexaarni777, вариант 1: снять защиту листа - залить желтым - вернуть защиту листа: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row > 8 Then Set r = Intersect(Target, Range("b9:c10, e9:ak10")) If Not r Is Nothing Then ActiveSheet.Unprotect "1" r.Interior.ColorIndex = 6 ActiveSheet.Protect "1" End If End If End Sub
[/vba]
вариант 2: переназначить горячие клавиши. Этот вариант хуже, т.к. остается возможность вставить форматы через вставку при пкм [vba]
Код
Private Sub Worksheet_Activate() Application.OnKey "^v", "pasteValue" Application.OnKey "+{INSERT}", "pasteValue" End Sub Private Sub Worksheet_Deactivate() Application.OnKey "^v" Application.OnKey "+{INSERT}" End Sub
[/vba][vba]
Код
Sub pasteValue() On Error Resume Next Selection.PasteSpecial Paste:=xlPasteValues End Sub
[/vba]
Lexaarni777, вариант 1: снять защиту листа - залить желтым - вернуть защиту листа: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row > 8 Then Set r = Intersect(Target, Range("b9:c10, e9:ak10")) If Not r Is Nothing Then ActiveSheet.Unprotect "1" r.Interior.ColorIndex = 6 ActiveSheet.Protect "1" End If End If End Sub
[/vba]
вариант 2: переназначить горячие клавиши. Этот вариант хуже, т.к. остается возможность вставить форматы через вставку при пкм [vba]
Код
Private Sub Worksheet_Activate() Application.OnKey "^v", "pasteValue" Application.OnKey "+{INSERT}", "pasteValue" End Sub Private Sub Worksheet_Deactivate() Application.OnKey "^v" Application.OnKey "+{INSERT}" End Sub
[/vba][vba]
Код
Sub pasteValue() On Error Resume Next Selection.PasteSpecial Paste:=xlPasteValues End Sub