powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
19 сообщений из 19, страница 1 из 1
Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
    #38963318
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем вечера формучание.
Мне очень нужно разобраться, как щелчком по ячейке, можно было бы скрывать диапазон ячеек.
Ну к примеру в строку в каждой ячейке написаны цифры 0,1,2,3,4,5 - щелкая по ячейке "0" все с 1-5 скрываются, а по двойному щелчку, раскрываются.

Я нашел в интернете код похожий, откуда можно было бы позаимствовать кое что, но я не смог его даже прочитать и понять :-(
Код ставит по клику галку в диапазоне с А2:А100 и по двойному клику ее убирает.
Код: vbnet
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.
'CODE 1 Ставим флажок если был один щелчок по ячейке.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
        If Not Intersect(Target, Range("A2:A100")) Is Nothing Then
            Target.Font.Name = "Marlett"
            If Target = vbNullString Then
                Target = "a"
            Else
                Target = vbNullString
            End If
        End If
End Sub
  
'CODE 2 убираем флажок по двойному щелчку по ячейке.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    If Not Intersect(Target, Range("A2:A100")) Is Nothing Then
        Cancel = True 'что бы не уйти в режим редактирования.
        Target.Font.Name = "Marlett"
            If Target = vbNullString Then
                Target = "a"
            Else
                Target = vbNullString
            End If
    End If
End Sub



Спасибо, тем кто отзовется.
Буду рад рабочему примеру кода, так как я мои знания VBA заканчиваются на вызове по кнопке MsgBox.
С уважением, Дмитрий )
...
Рейтинг: 0 / 0
Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
    #38963328
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не очень понятно, что значит "скрываются ячейки". Скрывать можно строки, столбцы.

Приложите файл с тем, что вы хотите
...
Рейтинг: 0 / 0
Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
    #38963330
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Прикрепляю файл.
Если щелкать по в области от А2:А100 то правильно вы сказали "колонки" от 1 до 15 будут скрываться.
Это мне и нужно.
Только нужно разобраться в коде, написать его грамотно.
Что бы это происходило по нажатию на конкретную ячейку, да и в коде лишнего не было.
...
Рейтинг: 0 / 0
Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
    #38963336
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я все равно ничего не понял. Что такое "ячейка 0"? Что значит "конкретная ячейка"? Что значит "все с 1-5"?

Вы сами бы смогли понять, если бы я вам такими терминами написал?
...
Рейтинг: 0 / 0
Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
    #38963349
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Это просто цифры, в ячейках. Это ничего не значащие значений, как а,б,в. Просто мне нужно было показать суть скрытия колонок, где в каждой колонке просто что-то есть, и это мы скрываем.
Если уже совсем детально то 0 - это число внессенное в ячейку, по нажатию на эту ячейку происходит скрытие по колонкам всех ячеек в которых написаны 1-5. Это вовсе не означает что макрос должен сам прочитать эти цифры и как то с ними взаимодействовать.

Я попробую еще раз объяснить но по другому.
Есть ячейка А1:А1 - по нажатию на нее сворачиваются все ячейки диапазоном B1:P1.
прилагаю скриншот
...
Рейтинг: 0 / 0
Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
    #38963351
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добавлю.
По двойному нажатию, происходит скрытия, так же по двойному нажатию раскрытие.
...
Рейтинг: 0 / 0
Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
    #38963353
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxiЯ попробую еще раз объяснить но по другому.
Есть ячейка А1:А1 - по нажатию на нее сворачиваются все ячейки диапазоном B1:P1.Тогда непонятно, что еще требуется. У вас уже есть файл, который работает, как вы описали.

(при условии, что не сворачиваются, а скрываются и не ячейки а столбцы, если будете так небрежны в терминологии, вы не сможете написать программу, ибо программирование не переносит небрежности)
...
Рейтинг: 0 / 0
Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
    #38963359
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxiПо двойному нажатию, происходит скрытия, так же по двойному нажатию раскрытие.так?
...
Рейтинг: 0 / 0
Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
    #38963363
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Спасибо, постараюсь более ясно излагаться. Просто в моем представлении вроде все понятно, а начинаешь объяснять, как то все сразу не так.
В моем примере не все так как я бы хотел.

Мой код почти работает, однако функция срабатывает по разным видам кликов.
Мне нужно все на двойной клик сделать. Что столбцы скрывались, так и скрывались, щелкая по ячейке.
...
Рейтинг: 0 / 0
Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
    #38963367
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxiМне нужно все на двойной клик сделать.об этом в первичном сообщении не было ни слова. Зато было много слов, не имеющих отношения к делу. Приводите в порядок мысли и все получится.
...
Рейтинг: 0 / 0
Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
    #38963392
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

да, но у меня что-то откровенно говоря не получается написать условия, по которому, было бы понятно, когда надо скрыть колонки, а когда их раскрыть...

Мой двойной щелчок в условии, может выполнить только что-то одно.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("A1:A1")) Is Nothing Then
    If Selection.EntireColumn.Hidden = True Then
            Columns("C:O").Select
            Selection.EntireColumn.Hidden = False
        Else
            Columns("C:O").Select
            Selection.EntireColumn.Hidden = True
    End If
End If
Cancel = True 
End Sub
...
Рейтинг: 0 / 0
Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
    #38963393
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а чем не устроил мой вариант?
...
Рейтинг: 0 / 0
Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
    #38963394
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

прощу прощения. Видимо утомление за день сказывается, я что-то не увидел вложенного файла и пошел мучить код дальше.
Посмотрел ваш вариант, он вполне подходит. Все, спасибо огромное, тему можно закрыть! :)
...
Рейтинг: 0 / 0
Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
    #38963395
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой вариант переводит столбцы в противоположное состояние по одному. Там желательно использовать отключение обновления экрана, чтобы работало быстрее. Но можно сделать и так, как в вашем варианте, переключать все столбцы только в одно состояние (проверяя состояние, скажем, первого из них)
...
Рейтинг: 0 / 0
Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
    #38963762
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

У меня получилось 12 кнопок, каждая из которых сворачивает(Скрывает) свои столбцы.
Теперь возник вопрос, уже касающийся оптимизации.
Как функция дает команду закрасить ячейку? Если закрашена, значит столбцы скрыты, а не закрашенная, столбцы раскрыты ну или на оборот.

Код я сделал вот таким, через Range мне показалось удобнее, так как определить диапазон скрываемых колонок удобнее.
Код: vbnet
1.
2.
3.
4.
    If Not Intersect(Target, Cells(4, 7)) Is Nothing Then ' навигация
        Cancel = True
          Range("GO1:HE1").Columns.Hidden = Not Range("GO1:HE1").Columns.Hidden ' скрываемые колонки
    End If
...
Рейтинг: 0 / 0
Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
    #38963791
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxi
Код: vbnet
1.
Not Range("GO1:HE1").Columns.Hidden ' скрываемые колонки

по ходу вопрос, чему будет равен Range("GO1:HE1").Columns.Hidden, если часть столбцов скрыта, а часть - нет? ))
...
Рейтинг: 0 / 0
Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
    #38963796
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lopuxiКак функция дает команду закрасить ячейку?включить запись макроса

закрасить ячейку

выключить запись макроса

посмотреть, что получилось

а еще прочитать вот это
...
Рейтинг: 0 / 0
Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
    #38963965
Фотография lopuxi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Спасибо за ссылку и наведение на мысль о макросе.
Вроде работает. ))
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 
    If Not Intersect(Target, Cells(1, 1)) Is Nothing Then
        Cancel = True
          Range("B1:O1").Columns.Hidden = Not Range("B1:O1").Columns.Hidden
          If Target.Interior.ColorIndex = 35 Then
          Target.Interior.ColorIndex = 36
          Else
          Target.Interior.ColorIndex = 35
          End If 
    End If
End Sub
...
Рейтинг: 0 / 0
Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
    #38963994
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно просто вот так, без ИФ-ов:
Код: vbnet
1.
Target.Interior.ColorIndex = 71 - Target.Interior.ColorIndex
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Клик по одной ячейке вызывает команду Excel скрыть выбранный диапазон ячеек.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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