Страницы: 1
RSS
фокус на ячейку- выполнение макроса
 
Уважаемые Гуру, подскажите, как при щелчке на ячейке запустить макрос который бы окрасил её и соседнюю ячейку в определённый цвет (например жёлтый-36)  
если не закрашены- залить и если залиты- снять заливку.  
 
Пытался что-то собрать- не получается:  
 
Sub Макрос5  
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)  
If Target.Address(External:=True) = Лист1.Range("A6").Address(External:=True) Then  
ActiveSheet.Select  
Selection.Interior.ColorIndex = 36  
End Sub  
 
И вопрос- выше идёт привязка к конкретному листу, а у меня листов много с разными названиями, но у ячеек для окраски- "адрес" не меняется, их десять штук в определённых местах.  
 
Это возможно выполнить?
 
ответа не знаю, отметился так просто, чтоб различали - это не я :-)
 
лааадно, так и быть, тезка :-)  
вот из опыта народа  
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)  
If Target.Interior.ColorIndex = xlNone Then  
Target.Interior.ColorIndex = 6  
Else  
Target.Interior.ColorIndex = xlNone  
End If  
End Sub  
 
а вот для раскраски строк  
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)  
If Target.EntireRow.Interior.ColorIndex = xlNone Then  
Target.EntireRow.Interior.ColorIndex = 6  
Else  
Target.EntireRow.Interior.ColorIndex = xlNone  
End If  
End Sub  
 
обработать напильником
 
Спасибо, тёзка! :)  
Я не хотел, чтобы подумали про тебя- что это ты ламер... :)  
Сорри.  
Это мне ума не хватило...  
По теме:  
Сейчас буду пробовать.
 
спакуха! все и так знают, что в макросах я ламер :-)
 
Замечательно, только вот необходимо диапазон "срабатывания" ограничить, я попробовал- что-то не так?  
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)  
ActiveSheet.Unprotect Password:=""  
   For i = 0 To 80 Step 8  
   For Each cl In Range("a6:b6,a14:b14,a22:b22,a30:b30,a38:b38,a46:b46,a54:b54,a62:b62,a70:b70,a78:b78,a86:b86").Offset(i, 0)  
If Target.Interior.ColorIndex = xlNone Then  
Target.Interior.ColorIndex = 36  
Else  
Target.Interior.ColorIndex = xlNone  
End If  
Next  
Next  
ActiveSheet.Protect Password:=""  
End Sub
 
Не понял, зачем Вам эти циклы.  
Может Вы этого хотите?  
Private Sub Worksheet_SelectionChange(ByVal Target As Range)  
If Not Intersect(Range("a6:b6,a14:b14,a22:b22,a30:b30,a38:b38,a46:b46,a54:b54,a62:b62,a70:b70,a78:b78,a86:b86"), Target) Is Nothing Then Exit Sub  
If Target.Offset(1, 0).Interior.ColorIndex = xlNone Then  
Target.Offset(1, 0).Interior.ColorIndex = 6  
Else  
Target.Offset(1, 0).Interior.ColorIndex = xlNone  
End If  
End Sub
Страницы: 1
Читают тему
Наверх