Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Выделение строки другим цветом("курсор") и обратно / 9 сообщений из 9, страница 1 из 1
03.05.2007, 09:37:53
    #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
03.05.2007, 09:51:03
    #34501182
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение строки другим цветом("курсор") и обратно
сделай статические переменные и перед тем, как менять заливку и параметры шрифта, помещай текущие значения в эти переменные.
...
Рейтинг: 0 / 0
03.05.2007, 10:00:24
    #34501211
andMegaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение строки другим цветом("курсор") и обратно
Не понял. Можно по подробнее?
...
Рейтинг: 0 / 0
03.05.2007, 10:24:09
    #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
03.05.2007, 10:39:54
    #34501329
andMegaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение строки другим цветом("курсор") и обратно
Да, да, у меня уже начало получаться. Но выдает ошибку,нпаример если, выделена не вся строка каким либо цветом, а несколько ячеек. Выдает ошибку №94. Не ужели каждую ячейку в строке проверять и записывать в какой-нибудь массив?
...
Рейтинг: 0 / 0
03.05.2007, 11:31:31
    #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
03.05.2007, 12:22:14
    #34501690
andMegaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение строки другим цветом("курсор") и обратно
Так тоже ничего не получается.
Когда закрашена вся строка, то "курсор" пробегает по ней туда обратно и потом эта закрашеная строка остается закрашеной тем цветом, каким и бала изначально.
Но если закрашена не вся строка, а,например, диапазон ячеек, то происходит ошибка.
Переменной
Код: plaintext
OldInteriorColorIndex
присваивается цвет всей строки,а не диапазона ячеек. Поэтому я думаю что в
Код: plaintext
OldInteriorColorIndex = Target.EntireRow.Interior.ColorIndex
вместо
Код: plaintext
Target.EntireRow
надо писать что-то другое. Может то, что связано с ячейками (диапазонами ячеек)
...
Рейтинг: 0 / 0
03.05.2007, 12:41:58
    #34501809
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение строки другим цветом("курсор") и обратно
можно завети спрятанный лист и туда копировать для хранения формат всего диапазона
...
Рейтинг: 0 / 0
03.05.2007, 12:49:59
    #34501848
andMegaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выделение строки другим цветом("курсор") и обратно
А также появляется ошибка 1004 в
Код: plaintext
v_Previous.EntireRow.Font.Size = OldFontSize
"Нельзя установить свойство Size класса Font".
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Выделение строки другим цветом("курсор") и обратно / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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