При нажатии на ячейку она закрашивается excel

Дня доброго дамы и господа.
У меня возник еще один вопрос по автомотизации экселя…
Задача не сложная наверно для гуру но для рядового пользователя эксель иногда тупиковая.

Пример следующий
Нужно написать функцию при нажатии на которую клетка окрашивалась в определенный цвет.
Далее по нажатию кнопки определялось чило окрашенных клавишь и выводилось в ячейку

Я пытался сделать по двум примерам:

Пример первый:

Код
'CODE 1 Ставим флажок, если был одиночный щелчок по ячейке
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Target.Cells.Count > 1 Then Exit Sub
 If Not Intersect(Target, Range("A6:A1000" ;) ) Is Nothing Then 'Если ячейка пересекается с указанным диапазоном, то
 Target.Font.Name = "Marlett" 'Назначаем ячейке шрифт
 If Target = vbNullString Then 'Если ячейка пуста, то
 Target = "a" 'заполняем её символом "а" (латиница)
 Else 'Иначе
 Target = vbNullString 'в ячейке пусто
 End If
 Target.Offset(0, 1).Activate '"отскакиваем" вправо на один столбец
 End If
End Sub

как переработать функцию чтобы при нажатии ячейка просто закрашивалась?

Вторая функция с вашего сайта:

Код
Public Function SumByColor(DataRange As Range, ColorSample As Range) As Double
 Dim Sum As Double
 Application.Volatile True
 For Each cell In DataRange
 If cell.Interior.Color = ColorSample.Interior.Color Then
 Sum = Sum + 1
 End If
 Next cell
 SumByColor = Sum
 End Function

Но проблема в том что она не обновляется автоматом надо чтоб или автоматом или по жмаконью кнопки.
она обновлялась.

P/s если не сложно посоветуйте книгу по программированию на VBA
начальство поставило задачу скрестить эксель и корел под VBA для расчетов и отрисовки деталей.

В этой статье будут показаны некоторые методы изменения цвета ячейки при нажатии на ячейку и изменение выделенного цвета при выборе диапазона ячеек в Excel.

Изменить цвет ячейки при нажатии на ячейку с кодом VBA
Измените выделенный цвет, когда ячейки выбраны с помощью кода VBA
Выделите всю строку и столбец активной ячейки с помощью Kutools for Excel


Изменить цвет ячейки при нажатии на ячейку с кодом VBA

Здесь вы можете изменить цвет фона ячейки, дважды щелкнув по ней или щелкнув правой кнопкой мыши с помощью следующего кода VBA.

1. На рабочем листе вы измените цвет ячейки при нажатии на нее, щелкните правой кнопкой мыши вкладку листа и нажмите Просмотреть код из контекстного меню.

2. в Microsoft Visual Basic для приложений окна, скопируйте и вставьте приведенный ниже код VBA в Code окно.

VBA: изменить цвет ячейки при нажатии на нее

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Target.Interior.Color = vbRed
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Target.Interior.Color = vbGreen
End Sub

3. Нажмите другой + Q клавиши одновременно, чтобы закрыть Microsoft Visual Basic для приложений окно.

Затем, когда вы дважды щелкните ячейку, она будет окрашена в красный цвет. И когда вы щелкаете правой кнопкой мыши по ячейке, она будет окрашена в зеленый цвет. Смотрите скриншот:



Измените выделенный цвет, когда ячейки выбраны с помощью кода VBA

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

1. Щелкните правой кнопкой мыши вкладку листа, для которой нужно изменить цвет выделения выбранного диапазона, и щелкните Просмотреть код из контекстного меню.

2. в Microsoft Visual Basic для приложений окна, скопируйте и вставьте приведенный ниже код VBA в Code окно.

Код VBA: изменить выделенный цвет выбранного диапазона

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With Target
        .Worksheet.Cells.FormatConditions.Delete
        .FormatConditions.Add xlExpression, , "TRUE"
        .FormatConditions(1).Interior.Color = vbYellow
    End With
End Sub

3. Нажмите другой + Q ключи одновременно, чтобы закрыть Microsoft Visual Basic для приложений окно.

С этого момента цвет выделенного диапазона или ячейки изменится на желтый. Когда вы щелкаете другую ячейку или диапазон ячеек, ячейки будут раскрашены автоматически.


Выделите всю строку и столбец активной ячейки с помощью Kutools for Excel

Если вы имеете дело с большим листом, необходимо выделить всю строку и столбец активной ячейки, чтобы облегчить чтение. Здесь Макет для чтения полезности Kutools for Excel могу помочь тебе.

1. Нажмите Кутулс > Макет для чтения. Смотрите скриншот:

Когда макет чтения включен, вы можете видеть, что строка и столбец активной ячейки сразу выделяются.

Внимание: Вы можете изменить настройки макета чтения в зависимости от ваших потребностей, как показано на скриншоте ниже.

  Если вы хотите получить бесплатную пробную версию (30-день) этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.


Выделите всю строку и столбец активной ячейки с помощью Kutools for Excel


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Выбор цвета ячейки по нажатию на нее.

foliant

Дата: Понедельник, 30.11.2015, 11:07 |
Сообщение № 1

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

Добрый день уважаемые знатоки! Будьте добры, подскажите пожалуйста, каким образом можно реализовать выбор цвета ячейки не из ленты, а непосредственно по нажатию на нее? Работаю с таблицами, большие объемы данных, и в зависимости от значения окрашиваю ячейку в зеленый или красный цвет. УФ пробовал, но не подходит, так как значения могут быть как числовые так и текствовые. Четкой определенности нет. Может какой-нибудь выпадающий список или комбинация клавиш? Вобщем я в excele на начальном уровне.

 

Ответить

SLAVICK

Дата: Понедельник, 30.11.2015, 11:15 |
Сообщение № 2

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

Комбинация клавиш:
Alt Я ЗЗ(буквы з)
А дальше стрелками выбирайте


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICKПонедельник, 30.11.2015, 11:17

 

Ответить

Мурад

Дата: Понедельник, 30.11.2015, 11:16 |
Сообщение № 3

Группа: Проверенные

Ранг: Ветеран

Сообщений: 509


Репутация:

17

±

Замечаний:
0% ±


Excel 2007

Даже если сделаем выпадающий список, количество ваших действий для выбора цвета из ленты или из созданного списка будет одинаковым.. Смысл изобретать колесо?

 

Ответить

foliant

Дата: Понедельник, 30.11.2015, 11:27 |
Сообщение № 4

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

все таки считаю, что ореентироваться проще когда не нужно отвлекать взгляд и потом два цвета рядом это быстрее выбрать. Работа монотонная, и хочется выполнять быстрее

Сообщение отредактировал Serge_007Вторник, 01.12.2015, 00:44

 

Ответить

foliant

Дата: Понедельник, 30.11.2015, 11:30 |
Сообщение № 5

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

Комбинация клавиш:
Alt Я ЗЗ(буквы з)
А дальше стрелками выбирайте

имеется ввиду по одному нажатию 2-3-х клавиш = 1 цвет
[moder]Не надо цитировать пост целиком. Это нарушение Правил форума[/moder]

Сообщение отредактировал PelenaПонедельник, 30.11.2015, 11:35

 

Ответить

Pelena

Дата: Понедельник, 30.11.2015, 11:38 |
Сообщение № 6

Группа: Админы

Ранг: Местный житель

Сообщений: 18797


Репутация:

4284

±

Замечаний:
±


Excel 2016 & Mac Excel

Если цвета всего два, то запишите макрорекодером окрашивание ячейки и повесьте эти два макроса на разные сочетания клавиш


«Черт возьми, Холмс! Но как??!!»
Ю-money 41001765434816

 

Ответить

Manyasha

Дата: Понедельник, 30.11.2015, 11:39 |
Сообщение № 7

Группа: Модераторы

Ранг: Старожил

Сообщений: 2198


Репутация:

898

±

Замечаний:
0% ±


Excel 2010, 2016

foliant, покажите все-таки в файле, какие ячейки как закрашивать, может кто-нибудь УФ придумает…
И сколько цветов нужно для закраски? Если 2-3, то можно макрос на клавиши какие-нибудь повесить


ЯД: 410013299366744 WM: R193491431804

 

Ответить

foliant

Дата: Понедельник, 30.11.2015, 11:53 |
Сообщение № 8

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

Если 2-3, то можно макрос на клавиши какие-нибудь повесить

подскажите как записать?

К сообщению приложен файл:

1958131.xlsx
(28.0 Kb)

 

Ответить

SLAVICK

Дата: Понедельник, 30.11.2015, 11:57 |
Сообщение № 9

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

Вот ловите
Красная заливка:ctrl к
Зеленая:ctrl з
Русская раскладка

К сообщению приложен файл:

1958131.xlsm
(31.7 Kb)


Иногда все проще чем кажется с первого взгляда.

 

Ответить

foliant

Дата: Понедельник, 30.11.2015, 12:01 |
Сообщение № 10

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

Огромное спасибо

Сообщение отредактировал Serge_007Вторник, 01.12.2015, 00:45

 

Ответить

foliant

Дата: Понедельник, 30.11.2015, 12:02 |
Сообщение № 11

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

 

Ответить

foliant

Дата: Понедельник, 30.11.2015, 12:10 |
Сообщение № 12

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

sorry, тут же возникла проблемка: при попытке вернуть действие (в случаи если ошибся) назад не отменятся. Так что этот метод не подходит.

 

Ответить

_Boroda_

Дата: Вторник, 01.12.2015, 00:25 |
Сообщение № 13

Группа: Модераторы

Ранг: Местный житель

Сообщений: 16618


Репутация:

6465

±

Замечаний:
0% ±


2003; 2007; 2010; 2013 RUS

Объясните принцип раскраски. Почему какая-то ячейка зеленая, а какая-то красная?


Скажи мне, кудесник, любимец ба’гов…
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995

 

Ответить

foliant

Дата: Вторник, 01.12.2015, 11:15 |
Сообщение № 14

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

Объясните принцип раскраски

Зеланая — событие выиграло, красный — проиграло. Есть еще варианты кроме макросов?

 

Ответить

foliant

Дата: Вторник, 01.12.2015, 11:21 |
Сообщение № 15

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

вот примерно того, чего хочется. Но я так как я не бум-бум, не могу понять принцип. Выпадающий могу сделать, но вот чтобы сохранить цвет ячейки? В чем секрет? Да и в этом методе есть тоже минус: помечается всего одна ячейка, мне же при выделении диапазона нужно одновременное окрашивание и без цифр. Просто цвет и все.

 

Ответить

Эх_Прорвёмся

Дата: Вторник, 01.12.2015, 11:57 |
Сообщение № 16

Группа: Заблокированные

Ранг: Участник

Сообщений: 72


Репутация:

-21

±

Замечаний:
100% ±


Excel 2003

вот примерно того, чего хочется.

Где?


Объяснять как бабушке на скамеечке у подъезда.

 

Ответить

foliant

Дата: Вторник, 01.12.2015, 12:17 |
Сообщение № 17

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010


не могу прикрепить — файл превышает допустимый размер. Ссылки на сторонние ресурсы разрешены?

 

Ответить

Эх_Прорвёмся

Дата: Вторник, 01.12.2015, 12:21 |
Сообщение № 18

Группа: Заблокированные

Ранг: Участник

Сообщений: 72


Репутация:

-21

±

Замечаний:
100% ±


Excel 2003

Ссылки на сторонние ресурсы разрешены?

А сократить файл? Ведь миллион строк и столбцов не надо. Сделайте несколько строк и столбцов, и покажите, что и как должно получиться в итоге.


Объяснять как бабушке на скамеечке у подъезда.

 

Ответить

foliant

Дата: Вторник, 01.12.2015, 12:23 |
Сообщение № 19

Группа: Пользователи

Ранг: Участник

Сообщений: 86


Репутация:

0

±

Замечаний:
40% ±


Excel 2010

защищен от изменений, не могу ничего сократить

 

Ответить

Эх_Прорвёмся

Дата: Вторник, 01.12.2015, 12:24 |
Сообщение № 20

Группа: Заблокированные

Ранг: Участник

Сообщений: 72


Репутация:

-21

±

Замечаний:
100% ±


Excel 2003


А зачем этот файл сокращать? Создайте СВОЙ, в который скопируйте часть данных из этого защищённого, и покажите что и как должно быть.


Объяснять как бабушке на скамеечке у подъезда.

 

Ответить

Lendor

0 / 0 / 0

Регистрация: 13.02.2013

Сообщений: 34

1

13.02.2013, 17:16. Показов 11576. Ответов 7

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

добрый день. Имеется следующий код:

Visual Basic
1
2
3
4
5
6
7
8
9
10
'     заливка выбранной ячейки цветом по нажатию правой кнопки мыши
 Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Target.Interior.ColorIndex = 1
    Cancel = True
End Sub
'     очистка заливки выбранной ячейки по двойному нажатию левой кнопки мыши
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Target.Interior.ColorIndex = xlNone
    Cancel = True
End Sub

Данный код прикручен к заблокированному листу, причем на листе есть несколько ячеек без блокировки. Проблема данного кода в том что, при кликании в любом заблокированной миесте листа код срабатывает на ячейке,которая является активной. Как нужно изменить код, чтобы при кликании по определенной ячейке заливалась только она, ну или запретить срабатывание кода на заблокированной части листа. Спасибо



0



IvanOK

693 / 99 / 10

Регистрация: 25.06.2011

Сообщений: 718

13.02.2013, 18:54

2

Lendor,
вставь

Visual Basic
1
2
3
if target.address="$A$1" then
 делаем что надо
end if



1



toiai

3217 / 966 / 223

Регистрация: 29.05.2010

Сообщений: 2,085

13.02.2013, 19:51

3

Можно и так:

Visual Basic
1
2
3
if Not target.Locked then
 делаем что надо
end if



2



Lendor

0 / 0 / 0

Регистрация: 13.02.2013

Сообщений: 34

14.02.2013, 10:35

 [ТС]

4

Цитата
Сообщение от toiai
Посмотреть сообщение

Можно и так:

Visual Basic
1
2
3
if Not target.Locked then
 делаем что надо
end if

к сожалению, данное условие не избавляет от проблемы. но все-равно спасибо



0



693 / 99 / 10

Регистрация: 25.06.2011

Сообщений: 718

14.02.2013, 10:50

5

Lendor, все еще зависит от того куда ты условие прописал



0



Lendor

0 / 0 / 0

Регистрация: 13.02.2013

Сообщений: 34

14.02.2013, 12:25

 [ТС]

6

Visual Basic
1
2
3
4
5
6
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    If Not Target.Locked Then
    Target.Interior.ColorIndex = 1
    Cancel = True
    End If
    End Sub

вот таким образом, код прикреплен непосредственно к заблокированному листу



0



3217 / 966 / 223

Регистрация: 29.05.2010

Сообщений: 2,085

14.02.2013, 17:36

7

Все работает, просто у Вас неправильно настроена защита листа, вот пример без проблем:
— незаблокированные ячейки в обрамлены.



0



0 / 0 / 0

Регистрация: 13.02.2013

Сообщений: 34

14.02.2013, 21:55

 [ТС]

8

судя по файлу, который у меня не пашет, действительно проблемы с настройками защиты. буду ковырять настройки. всем спасибо еще раз

Добавлено через 2 часа 31 минуту
все, нашел косяк



0



Вы можете сделать это только через VBA. Вот некоторый код, который вы можете поместить в объект Sheet.

Private lastRange As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Address = Range("A1").Address Then
        If Not lastRange Is Nothing Then
            lastRange.Interior.Color = Range("A1").Interior.Color
        End If
    Else
       Set lastRange = Target
    End If
End Sub

Объект lastRange сохраняется от выбора к выделению. Это единственный способ запомнить VBA, какой диапазон мы хотим выделить. Всякий раз, когда вы изменяете выделение, оно устанавливает это выделение на lastRange если только это не A1 в этом случае оно не окрашивает предыдущее выделение в любой цвет A1 .


Однако, основываясь на ваших комментариях, ваша потребность немного шире, чем эта. Поскольку вам нужен диапазон ячеек разных цветов, возможно, вам нужен следующий код:

Private lastRange As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count = 1 Then
        If Not Intersect(Target, Range("A1:A5")) Is Nothing Then
            If Not lastRange Is Nothing Then
                lastRange.Interior.Color = Target.Interior.Color
                Exit Sub
            End If
        End If
    End If
    Set lastRange = Target
End Sub

Теперь есть целый ряд ячеек A1:A5 которые могут быть разных цветов. Если вы выберете одну ячейку в этом диапазоне, ваш предыдущий выбор будет иметь тот же цвет, что и текущая ячейка. Вы можете настроить диапазон A1:A5 , как вам нужно.


У меня есть одна странность, о которой я знаю: если вы выбираете диапазон, то фигура, а затем A1 , диапазон, который вы выбрали ранее, все еще сохраняется как lastRange . Это, наверное, нормально, но я не знаю, как вы используете.

Понравилась статья? Поделить с друзьями:
  • При нажатии на печать word зависает
  • При объединение ячейки в word что будет
  • При нажатии на кнопку с изображением изогнутой влево стрелки в word
  • При обращении к ячейке в libreoffice calc ms excel используются три типа адресации
  • При нажатии на кнопку с изображением дискеты на панели пиктографического меню в word происходит