Страницы: 1
RSS
Выделение цветом конкретной ячейки на других листах
 
Добрый день!
Находил темы про выделение ячейки - координатное выделение, также надстройка выделенной ячейкой с помощью стрелочек.

На просторах сети есть способ выделения активной ячейки цветом.
Немного подредактировал (благодаря форуму) и добавил кнопку для включения и выключения выделения.

Как добавить в код 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
Изменено: IVAN92 - 23.02.2020 14:54:18
 
Какая это - "конкретная"?
 
Выделить в листах Морепродукты, Техника  -- ячейку i1
Изменено: IVAN92 - 23.02.2020 15:02:38
 
так и пишите:
Код
лист.ячейка.Interior.Color = RGB(220,50,100)

лист.ячейка. - ссылка.
Числа (от 0 до 255)- красный, зеленый, синий. Меняете их - меняете результирующий цет
 
Мне нужно поместить выделение ячейки 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
Изменено: IVAN92 - 23.02.2020 17:33:40
 
ну ячейки на разных листах можно так выделить:
Код
    Range("I2").Select
    Sheets(Array("морепродукты", "техника", "итд")).Select
Соблюдение правил форума не освобождает от модераторского произвола
 
IVAN92, что-то Вы перемудрили - зачем УФ? Зачем Select? Обычная заливка чем не устраивает?
 
Цитата
buchlotnik написал:
ну ячейки на разных листах можно так выделить:
Попробовал, через несколько операций происходит сбой в excel и макрос блокируется даже удалить нельзя.
 
Код
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
Изменено: IVAN92 - 23.02.2020 17:39:29
 
См. #9
 
Похоже я непонятно излагаю, что пытаюсь получить. Попробую на картинках показать.

Вот ячейка вкл и активно выделение цветом. Далее выключаю выделение цветом и выделяется ячейка i2. И после этого та ячейка остается выделена зеленым цветом i2, а я могу без выделения цветом выделять все остальные ячейки.

Так не пойдет. Картинки удалены - превышение допустимого размера вложения [МОДЕРАТОР]
Изменено: IVAN92 - 23.02.2020 17:55:53
 
Цитата
IVAN92 написал:
нужно выделить ячейку не только на первом листе, но и на других
Как написали, так и сделал: по кнопке на всех листах указанная ячейка или заливается жёлтым или заливка удаляется. Разве не это было нужно?.
 
Вот пример. Попробуйте включить on, и далее выбирать отдельно ячейки. Потом включить off и также выбрать ячейки.
 
Цитата
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
Изменено: IVAN92 - 23.02.2020 18:16:21
 
Вам пора присвоить звание Заслуженный мастер формулировок.
Так нужно?
Код
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. При написании кода используйте табуляцию - читабельность гораздо лучше.
 
Цитата
Юрий М написал:
P.S. При написании кода используйте табуляцию - читабельность гораздо лучше.
Да, спс.
Изменено: IVAN92 - 23.02.2020 18:35:45
 
Про табуляцию Вы ответили, а про макрос - так было нужно? )
 
Все же добавил в код Range("i1").Select. На других листах вручную просто поставил в ячейки нужные.
Стало намного удобнее.
Сделал еще защиту листа, чтобы случайно не удалили позиции из списка.
Спасибо большое за код - теперь все работает как задумывалось.  
 
Цитата
IVAN92 написал:
Все же добавил в код Range("i1").Select
Если добавили только для того, чтобы эта ячейка оказалась закрашенной, то зря: в #9 показано, как это сделать без активации ячейки.  
Страницы: 1
Наверх