powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Выделение строки другим цветом("курсор") и обратно
9 сообщений из 9, страница 1 из 1
Выделение строки другим цветом("курсор") и обратно
    #34501147
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!!!
Для удобства проверки данных с экрана сделал некую процедуру

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Sub Application_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
  If v_RHEnabled Then
    If v_Previous Is Nothing Then Set v_Previous = Target
      
      v_Previous.EntireRow.Interior.ColorIndex = xlNone
      v_Previous.EntireRow.Font.ColorIndex =  0 
      v_Previous.EntireRow.Font.Size =  10 
      v_Previous.EntireRow.Font.Bold = False  
      
      Target.EntireRow.Interior.ColorIndex = ColorFON
      Target.EntireRow.Font.ColorIndex = ColorSHRIFT
      Target.EntireRow.Font.Size = SHRIFTSIZE
      Target.EntireRow.Font.Bold = bolds
          
    
    Set v_Previous = Target
  End If
End Sub

В ней выделяется вся строка (заливка цветом) цветом ColorFON,
цвет шрифта на выделенной строке задается как ColorSHRIFT,
размеру шрифта соответствует SHRIFTSIZE и также выделяется жирным шрифтом.
Где ColorFON, ColorSHRIFT, SHRIFTSIZE - это целочисленные переменные, которые задаются в другой процедуре.
Тут возникли некоторые неудобства:
Если какая либо ячейка была выделена цветом, то после выделения её так называемым "курсором" она становится не закрашеной. Т.е. дело в
Код: plaintext
v_Previous.EntireRow.Interior.ColorIndex = xlNone
Как сделать чтобы вместо
Код: plaintext
xlNone 
оставась прежняя заливка?
Точно так же обстоит дело и с цветом и размером шрифта.
...
Рейтинг: 0 / 0
Выделение строки другим цветом("курсор") и обратно
    #34501182
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделай статические переменные и перед тем, как менять заливку и параметры шрифта, помещай текущие значения в эти переменные.
...
Рейтинг: 0 / 0
Выделение строки другим цветом("курсор") и обратно
    #34501211
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понял. Можно по подробнее?
...
Рейтинг: 0 / 0
Выделение строки другим цветом("курсор") и обратно
    #34501279
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
типа, так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
Private Sub Application_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
Static OldInteriorColorIndex As Long
Static OldFontColorIndex As Long
Static OldFontSize As Double
Static OldFontBold As Boolean

  If v_RHEnabled Then
  
    If v_Previous Is Nothing Then
        Set v_Previous = Target
        OldInteriorColorIndex = Target.EntireRow.Interior.ColorIndex
        OldFontColorIndex = Target.EntireRow.Font.ColorIndex
        OldFontSize = Target.EntireRow.Font.Size
        OldFontBold = Target.EntireRow.Font.Bold
    End If
      
    v_Previous.EntireRow.Interior.ColorIndex = OldInteriorColorIndex
    v_Previous.EntireRow.Font.ColorIndex = OldFontColorIndex
    v_Previous.EntireRow.Font.Size = OldFontSize
    v_Previous.EntireRow.Font.Bold = OldFontBold
        
    OldInteriorColorIndex = Target.EntireRow.Interior.ColorIndex
    OldFontColorIndex = Target.EntireRow.Font.ColorIndex
    OldFontSize = Target.EntireRow.Font.Size
    OldFontBold = Target.EntireRow.Font.Bold
    
    Target.EntireRow.Interior.ColorIndex = ColorFON
    Target.EntireRow.Font.ColorIndex = ColorSHRIFT
    Target.EntireRow.Font.Size = SHRIFTSIZE
    Target.EntireRow.Font.Bold = bolds
          
    
    Set v_Previous = Target
  End If
End Sub
...
Рейтинг: 0 / 0
Выделение строки другим цветом("курсор") и обратно
    #34501329
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, да, у меня уже начало получаться. Но выдает ошибку,нпаример если, выделена не вся строка каким либо цветом, а несколько ячеек. Выдает ошибку №94. Не ужели каждую ячейку в строке проверять и записывать в какой-нибудь массив?
...
Рейтинг: 0 / 0
Выделение строки другим цветом("курсор") и обратно
    #34501516
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не понял, вопроса. все равно, так попробуй
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
Option Explicit
Const ColorFON =  4 
Const ColorSHRIFT =  6 
Const SHRIFTSIZE =  6 
Const bolds = True

Const v_RHEnabled = True
Dim v_Previous As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static OldInteriorColorIndex As Long
Static OldFontColorIndex As Long
Static OldFontSize As Double
Static OldFontBold As Boolean

  If v_RHEnabled Then
  
    If v_Previous Is Nothing Then
        Set v_Previous = Target
        OldInteriorColorIndex = Target.EntireRow.Interior.ColorIndex
        OldFontColorIndex = Target.EntireRow.Font.ColorIndex
        OldFontSize = Target.EntireRow.Font.Size
        OldFontBold = Target.EntireRow.Font.Bold
    End If
      
    v_Previous.EntireRow.Interior.ColorIndex = OldInteriorColorIndex
    v_Previous.EntireRow.Font.ColorIndex = OldFontColorIndex
    v_Previous.EntireRow.Font.Size = OldFontSize
    v_Previous.EntireRow.Font.Bold = OldFontBold
        
    OldInteriorColorIndex = Target.EntireRow.Interior.ColorIndex
    OldFontColorIndex = Target.EntireRow.Font.ColorIndex
    OldFontSize = Target.EntireRow.Font.Size
    OldFontBold = Target.EntireRow.Font.Bold
    
    Target.EntireRow.Interior.ColorIndex = ColorFON
    Target.EntireRow.Font.ColorIndex = ColorSHRIFT
    Target.EntireRow.Font.Size = SHRIFTSIZE
    Target.EntireRow.Font.Bold = bolds
          
    
    Set v_Previous = Target
  End If
End Sub
...
Рейтинг: 0 / 0
Выделение строки другим цветом("курсор") и обратно
    #34501690
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так тоже ничего не получается.
Когда закрашена вся строка, то "курсор" пробегает по ней туда обратно и потом эта закрашеная строка остается закрашеной тем цветом, каким и бала изначально.
Но если закрашена не вся строка, а,например, диапазон ячеек, то происходит ошибка.
Переменной
Код: plaintext
OldInteriorColorIndex
присваивается цвет всей строки,а не диапазона ячеек. Поэтому я думаю что в
Код: plaintext
OldInteriorColorIndex = Target.EntireRow.Interior.ColorIndex
вместо
Код: plaintext
Target.EntireRow
надо писать что-то другое. Может то, что связано с ячейками (диапазонами ячеек)
...
Рейтинг: 0 / 0
Выделение строки другим цветом("курсор") и обратно
    #34501809
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно завети спрятанный лист и туда копировать для хранения формат всего диапазона
...
Рейтинг: 0 / 0
Выделение строки другим цветом("курсор") и обратно
    #34501848
andMegaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А также появляется ошибка 1004 в
Код: plaintext
v_Previous.EntireRow.Font.Size = OldFontSize
"Нельзя установить свойство Size класса Font".
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Выделение строки другим цветом("курсор") и обратно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]