Добрый день! Находил темы про выделение ячейки - координатное выделение, также надстройка выделенной ячейкой с помощью стрелочек.
На просторах сети есть способ выделения активной ячейки цветом. Немного подредактировал (благодаря форуму) и добавил кнопку для включения и выключения выделения.
Как добавить в код ToggleButton1 - выделение конкретной ячейки на других листах (это необходимо при печати выделенной области, т.к. данный способ удаляет форматирование) Ниже код и файл пример.
Код
Private Sub ToggleButton1_Click()
Select Case ToggleButton1
Case False 'когда он не активен
Range("i1").Select
Application.EnableEvents = True
Case True 'когда активен
Range("i1").Select
Application.EnableEvents = False
End Select
With Me.ToggleButton1
If .Value - True Then
.Caption = "On"
Else
.Caption = "Off"
End If
End With
End Sub
Мне нужно поместить выделение ячейки i2 на листе морепродукты в этот код (т.е. нужно выделить ячейку не только на первом листе, но и на других)
Код
Private Sub ToggleButton1_Click()
Select Case ToggleButton1
Case False 'когда он не активен
Range("i1").Select
Application.EnableEvents = True
Case True 'когда активен
Range("i1").Select
Application.EnableEvents = False
End Select
With Me.ToggleButton1
If .Value - True Then
.Caption = "On"
Else
.Caption = "Off"
End If
End With
End Sub
А этот код расположен в каждом листе
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
Cells.FormatConditions.Delete
With Target
.FormatConditions.Add Type:=xlExpression, Formula1:=True
.FormatConditions(1).Interior.Color = RGB(209, 241, 218)
End With
End Sub
Private Sub ToggleButton1_Click()
Dim i As Long
With Me.ToggleButton1
If .Value - True Then
.Caption = "On"
Else
.Caption = "Off"
End If
End With
For i = 1 To Sheets.Count
With Sheets(i).Range("I1")
If Me.ToggleButton1 Then
.Interior.ColorIndex = 6
Else
.Interior.ColorIndex = xlNone
End If
End With
Next
End Sub
Юрий М написал: что-то Вы перемудрили - зачем УФ? Зачем Select? Обычная заливка чем не устраивает?
Вставил код на каждом листе. Он позволяет менять цвет выделенной ячейки и если выделить другую, то формат прошлой возвращается. Минус этого способа в том, что при печати выделенной области - область выделяется цветом и формат (например стиль таблицы с чередующимися строками удаляется).
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
Cells.FormatConditions.Delete
With Target
.FormatConditions.Add Type:=xlExpression, Formula1:=True
.FormatConditions(1).Interior.Color = RGB(209, 241, 218)
End With
End Sub
Исходя из этого для печати нужно на время выключить цветное выделение, для этого сделал отдельно макрос, который отключает действие макроса выше и выделяет ту область (в данном случае ячейку), которая не попадает в область печати. На листе с кнопкой ячейка отлично выделяется, но т.к. код есть на других листах, то в этих листах зеленым выделяется ячейка на которой остановился, а хотел сделать как на первом листе. В этом коде на первом листе при включении и отключении выделяется ячейка i1., вот пытаюсь, чтобы этот код также выделял эту ячейку на других листах.
Код
Private Sub ToggleButton1_Click()
Select Case ToggleButton1
Case False 'когда он не активен
Range("i1").Select
Application.EnableEvents = True
Case True 'когда активен
Range("i1").Select
Application.EnableEvents = False
End Select
With Me.ToggleButton1
If .Value - True Then
.Caption = "On"
Else
.Caption = "Off"
End If
End With
End Sub
Похоже я непонятно излагаю, что пытаюсь получить. Попробую на картинках показать.
Вот ячейка вкл и активно выделение цветом. Далее выключаю выделение цветом и выделяется ячейка i2. И после этого та ячейка остается выделена зеленым цветом i2, а я могу без выделения цветом выделять все остальные ячейки.
Так не пойдет. Картинки удалены - превышение допустимого размера вложения [МОДЕРАТОР]
IVAN92 написал: Попробуйте включить on, и далее выбирать отдельно ячейки
ЗАЧЕМ выбирать? Какова конечная цель? Вы никак не поймёте - для того, чтобы с ячейкой сделать некие операции, совсем необязательно её выделять. Забудьте про активацию (Select),- объясните, что должно происходить с ячейками при включении/отключении кнопки.
Юрий М написал: Забудьте про активацию (Select),- объясните, что должно происходить с ячейками при включении/отключении кнопки.
При нажатии кнопки должен включаться и отключаться этот код. Но когда его отключаешь, то последняя ячейка выделенная становится зеленой.
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False
Cells.FormatConditions.Delete
With Target
.FormatConditions.Add Type:=xlExpression, Formula1:=True
.FormatConditions(1).Interior.Color = RGB(209, 241, 218)
End With
End Sub
Вам пора присвоить звание Заслуженный мастер формулировок. Так нужно?
Код
Private Sub ToggleButton1_Click()
'Select Case ToggleButton1
'Case False 'когда он не активен
'Range("i1").Select
'Case True 'когда активен
'Range("i1").Select
'End Select
With Me.ToggleButton1
If .Value - True Then
.Caption = "On"
Application.EnableEvents = True
Else
.Caption = "Off"
Application.EnableEvents = False
End If
End With
End Sub
P.S. При написании кода используйте табуляцию - читабельность гораздо лучше.
Все же добавил в код Range("i1").Select. На других листах вручную просто поставил в ячейки нужные. Стало намного удобнее. Сделал еще защиту листа, чтобы случайно не удалили позиции из списка. Спасибо большое за код - теперь все работает как задумывалось.