powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / выделение строк и столбцов актианых ачеек
8 сообщений из 8, страница 1 из 1
выделение строк и столбцов актианых ачеек
    #35992065
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После прочтения статьи уважаемого Николая Павлова, проникся-таки необходимостью создания подобной функции у себя в громадном отчёте.
Данный макрос выделяет стрку и столбец активной ячейки.
Исходный код автора выглядит так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Public NoEvents As Boolean
Public Sub SelOn()
   NoEvents = False
End Sub
Public Sub SelOff() 
    NoEvents = True
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim addr As String
    Dim x As Variant
    Dim rng, c, r, cll As String
    
    If NoEvents Then Exit Sub
    If Target.Cells.Count >  1  Then Exit Sub
        addr = ActiveCell.Address()
    x = Split(addr, "$")
    c = x( 1 )
    r = x( 2 )
    rng = c & ":" & c & "," & r & ":" & r
    Range(rng).Select
    cll = c & r
    Range(cll).Activate
End Sub
Однако, если "улететь" курсором далеко от начальной таблицы, экран моргает и видно его обновление. Это режет глаза.
+ ко всему подумал, что вертикальное выделение слишком громоздкое (у меня колонки очень разные по ширине)
В итоге, код выглядит так:
Код: plaintext
1.
2.
3.
4.
5.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Cells.Count >  1  Then Exit Sub
    
Rows(ActiveCell.Row).Select
Target.Activate
End Sub
Поделитесь соображениями по поводу моргания экрана.
Спасибо!
...
Рейтинг: 0 / 0
выделение строк и столбцов актианых ачеек
    #35992234
Фотография qwrqwr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
никогда не испытывал надобности в подобном, но если вдруг...то, наверное, сделал бы как-то так:
(набросок на коленке за 10 минут)
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static r As Range
If Not r Is Nothing Then r.Interior.ColorIndex = xlNone
If Target.Cells.Count >  1  Then Exit Sub
Set r = Application.Union(Target.EntireRow, Target.EntireColumn)
If Not r Is Nothing Then r.Interior.ColorIndex =  35 
End Sub
зы не подходит для окрашенных (форматированных цветом таблиц)
ЗЫ2 по ссылке больше всего понравился комментарий slan "только не нажимайте delete ;)"
...
Рейтинг: 0 / 0
выделение строк и столбцов актианых ачеек
    #35992286
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
qwrqwr,
тоже думал насчёт цветового выделения.
его минусы вы и сами пречислили:
-дохнут все цветовые выделения, что очень не приятно
-что-то работает в коде медленнее, чем с select (возможно, Application.Union, затрудняюсь оценить).
Зато не моргает экран...
тут, походу, больше и не сделаешь никак...
...
Рейтинг: 0 / 0
выделение строк и столбцов актианых ачеек
    #35992635
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
выделение строк и столбцов актианых ачеек
    #35992739
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
planBтут, походу, больше и не сделаешь никак...Пожалуй, я помолчу


Уже за этот день второй раз пишу такую фразу
...
Рейтинг: 0 / 0
выделение строк и столбцов актианых ачеек
    #35992943
Фотография qwrqwr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PlanBqwrqwr,
тоже думал насчёт цветового выделения.Ну, во-первых, именно на выделении цветом не надо зацикливаться. Лично мне, почему-то, не понравилась именно идея с Selection - а вдруг и правда Del нажмешь случайно :)
Тут надо смотреть на то, как отформатирована исходная таблица:
есть цветные ячейки, но шрифт везде черный - можно перекрашивать шрифт в ячейках;
есть разнообразное обычное форматирование, но нет условного - можно программно назначать/убирать .FormatConditions
Во-вторых, можно как в примере у уважаемого Deggasad назапоминать множество различных параметров - потом их восстанавливать - и не только по строке но и вплоть до анализа каждой ячейки :))
тут уже, правда получается из пушки по воробьям...
как вариант - можно еще выделять / снимать выделение (цвет, шрифт, Selestion, etc.) не по всей строке и столбцу - а только на видимые в этот момент в окне ячейки :)
Недостаток - это уже не получится (у меня не получилось) подвязать на события Экселя - но можно делать по нажатию пользовательских кнопок.
Как вариант - опять выделение цветом, но можно переделать на .Selection по-желанию :)
стандартный модуль:
Код: 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.
Public ActiveCellRow As Long
Public ActiveCellColumn As Long

Public Sub WishToSelect(ByVal ClearOnly As Boolean)

Static r As Range
If Not r Is Nothing Then r.Interior.ColorIndex = xlNone
If ClearOnly Then Exit Sub

Dim FirstCol As Long, FirstRow As Long, LastCol As Long, LastRow As Long
FirstCol = ExecuteExcel4Macro("GET.WINDOW(13)")
FirstRow = ExecuteExcel4Macro("GET.WINDOW(14)")
LastCol = FirstCol -  1  + ExecuteExcel4Macro("GET.WINDOW(15)")
LastRow = FirstRow -  1  + ExecuteExcel4Macro("GET.WINDOW(16)")

If ActiveCellColumn >= FirstCol And ActiveCellColumn <= LastCol Then
    Set r = ActiveSheet.Range(Cells(FirstRow, ActiveCellColumn), Cells(LastRow, ActiveCellColumn))
End If

If ActiveCellRow >= FirstRow And ActiveCellRow <= LastRow Then
    Set r = Application.Union(r, ActiveSheet.Range(Cells(ActiveCellRow, FirstCol), Cells(ActiveCellRow, LastCol)))
End If

r.Interior.ColorIndex =  35 

End Sub

Public Sub UserColorSelect()
WishToSelect False
End Sub

Public Sub UserColorClear()
WishToSelect True
End Sub
модуль листа:
Код: plaintext
1.
2.
3.
4.
5.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count >  0  Then
        ActiveCellRow = Target.Row
        ActiveCellColumn = Target.Column
    End If
End Sub
теперь делаем на панели инструментов 2 пользовательские кнопки, одной назначаем макрос UserColorSelect, другой - UserColorClear
первая выделяет строки/столбцы только на видимой части листа, вторая - при необходимости снимает ранее поставленное выделение
...
Рейтинг: 0 / 0
выделение строк и столбцов актианых ачеек
    #35992973
Фотография qwrqwr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
перечел все это и подумал,что не надо было городить огород с Worksheet_SelectionChange + 2 public переменные.
Достаточно внутри процедуры WishToSelect их объявить и сразу назначать
Код: plaintext
1.
2.
3.
If not ActiveCell is nothing Then
ActiveCellColumn = ActiveCell.Column
ActiveCellRow = ActiveCell.Row 
End If
вот. что значит корежить старый вариант, вместо того, чтобы писать с чистого листа
...
Рейтинг: 0 / 0
выделение строк и столбцов актианых ачеек
    #35993028
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может, это сгодится?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / выделение строк и столбцов актианых ачеек
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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