Vba excel выделить строку
У вас большой монитор, но таблицы, с которыми вы работаете - еще больше. И, пробегая взглядом по экрану в поисках нужной информации, всегда есть шанс "соскользнуть" взглядом на соседнюю строчку и посмотреть не туда. Я даже знаю людей, который для таких случаев постоянно держат недалеко от себя деревянную линейку, чтобы приложить ее к строке на мониторе. Технологии будущего!
А если при движении активной ячейки по листу будет подсвечиваться текущая строка и столбец? Своего рода координатное выделение примерно такого вида:
Поудобнее, чем линейка, правда?
Есть несколько способов разной сложности, чтобы реализовать такое. Каждый способ - со своими плюсами и минусами. Давайте разберем их детально.
Способ 1. Очевидный. Макрос, выделяющий текущую строку и столбец
Самый очевидный путь для решения нашей проблемы "в лоб" - нам нужен макрос, который будет отслеживать изменение выделения на листе и выделять целую строку и столбец для текущей ячейки. Также желательно иметь возможность при необходимости включать и отключать эту функцию, чтобы такое крестообразное выделение не мешало нам вводить, например, формулы, а работало только тогда, когда мы просматриваем список в поисках нужной информации. Это приводит нас к трем макросам (выделения, включения и выключения), которые нужно будет добавить в модуль листа.
Откройте лист со таблицей, в которой хотите получить такое координатное выделение. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этих трех макросов:
Измените адрес рабочего диапазона на свой - именно в пределах этого диапазона и будет работать наше выделение. Затем закройте редактор Visual Basic и вернитесь в Excel.
Нажмите сочетание клавиш ALT+F8, чтобы открыть окно со списком доступных макросов. Макрос Selection_On, как нетрудно догадаться, включает координатное выделение на текущем листе, а макрос Selection_Off - выключает его. В этом же окне, нажав кнопку Параметры (Options) можно назначить этим макросам сочетания клавиш для удобного запуска.
Плюсы этого способа:
- относительная простота реализации
- выделение - операция безобидная и никак не изменяет содержимое или форматирование ячеек листа, все остается как есть
Минусы этого способа:
- такое выделение некорректно работает в том случае, если на листе есть объединенные ячейки - выделяются сразу все строки и столбцы, входящие в объединение
- если случайно нажать клавишу Delete, то очистится не только активная ячейка, а вся выделенная область, т.е. удалятся данные из всей строки и столбца
Способ 2. Оригинальный. Функция ЯЧЕЙКА + Условное форматирование
Этот способ хотя и имеет пару недостатков, мне представляется весьма изящным. Реализовать что-либо, используя только встроенные средства Excel, минимально влезая в программирование на VBA - высший пилотаж ;)
Способ основан на использовании функции ЯЧЕЙКА (CELL), которая может выдавать массу различной информации по заданной ячейке - высоту, ширину, номер строки-столбца, числовой формат и т.д.. Эта функция имеет два аргумента:
- кодовое слово для параметра, например "столбец" или "строка"
- адрес ячейки, для которой мы хотим определить значение этого параметра
Хитрость в том, что второй аргумент не является обязательным. Если он не указан, то берется текущая активная ячейка.
Вторая составляющая этого способа - условное форматирование. Эта крайне полезная функция Excel позволяет автоматически форматировать ячейки, если они удовлетворяют заданным условиям. Если соединить эти две идеи в одно целое, то получим следующий алгоритм реализации нашего координатного выделения через условное форматирование:
- Выделяем нашу таблицу, т.е. те ячейки, в которых в будущем должно отображаться координатное выделение.
- В Excel 2003 и более старших версиях открываем меню Формат - Условное форматирование - Формула (Format - Conditional Formatting - Formula) . В Excel 2007 и новее - жмем на вкладке Главная (Home) кнопку Условное форматирование - Создать правило (Conditional Formatting - Create Rule) и выбираем тип правила Использовать формулу для определения форматируемых ячеек (Use formula)
- Вводим формулу для нашего координатного выделения:
Все почти готово, но остался один нюанс. Дело в том, что Excel не считает изменение выделения изменением данных на листе. И, как следствие, не запускает пересчет формул и перекраску условного форматирования только при изменении положения активной ячейки. Поэтому добавим в модуль листа простой макрос, который будет это делать. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этого простого макроса:
Теперь при изменении выделения будет запускаться процесс пересчета формулы с функцией ЯЧЕЙКА в условном форматировании и заливаться текущая строка и столбец.
Плюсы этого способа:
- Условное форматирование не нарушает пользовательское форматирование таблицы
- Этот вариант выделения корректно работает с объединенными ячейками.
- Нет риска удалить целую строку и столбец с данными при случайном нажатии Delete.
- Макросы используются минимально
Минусы этого способа:
- Формулу для условного форматирования надо вводить вручную.
- Нет быстрого способа включить-выключить такое форматирование - оно включено всегда, пока не будет удалено правило.
Способ 3. Оптимальный. Условное форматирование + макросы
Золотая середина. Используем механизм отслеживания выделения на листе при помощи макросов из способа-1 и добавим к нему безопасное выделение цветом с помощью условного форматирования из способа-2.
Откройте лист со таблицей, в которой хотите получить такое координатное выделение. Щелкните правой кнопкой мыши по ярлычку листа и выберите в контекстном меню команду Исходный текст (Source Code). Должно открыться окно редактора Visual Basic. Скопируйте в него этот текст этих трех макросов:
Не забудьте изменить адрес рабочего диапазона на адрес своей таблицы. Закройте редактор Visual Basic и вернитесь в Excel. Чтобы использовать добавленные макросы, нажмите сочетание клавиш ALT+F8 и действуйте аналогично способу 1.
Способ 4. Красивый. Надстройка FollowCellPointer
Excel MVP Jan Karel Pieterse родом из Нидерландов раздает у себя на сайте бесплатную надстройку FollowCellPointer(36Кб), которая решает ту же задачу, отрисовывая с помощью макросов графические линии-стрелки для подсветки текущей строки и столбца:
Красивое решение. Не без глюков местами, но попробовать точно стоит. Качаем архив, распаковываем на диск и устанавливаем надстройку:
В Microsoft Excel можно выбирать ячейки в диапазоне вручную или с помощью простого кода Microsoft Visual Basic для приложений. В этой статье приводится ряд примеров, которые можно использовать для выбора диапазона ячеек.
Дополнительная информация
Примеры выбора ячеек вручную
Чтобы вручную выбрать все данные в столбце, выберите первую ячейку и нажмите клавиши CTRL+SHIFT+СТРЕЛКА ВНИЗ.
Точно так же, чтобы вручную выбрать строку и все вложенные в нее столбцы, нажмите клавиши CTRL+SHIFT+СТРЕЛКА ВНИЗ+СТРЕЛКА ВПРАВО. Однако все данные должны быть неумными (т. е. пустые строки или столбцы не могут быть). Кроме того, вы можете выбрать текущую область данных (несколько строк или столбцов без пустых строк и столбцов).
В меню Правка выберите пункт Перейти.
В диалоговом окне Перейти нажмите кнопку Специальный.
В диалоговом окне Перейти к специальным выберите текущую область и нажмите кнопку
ОК.
Вы также можете выбрать этот диапазон с помощью простого Visual Basic для приложений кода.
Примечание. Если попытаться записать эту процедуру с помощью записи макроса, результаты будут не одинаковыми.
Примеры использования кода Visual Basic для выбора ячеек в диапазоне
Корпорация Майкрософт предоставляет примеры программирования только для иллюстрации без гарантии, выраженной или подразумеваемой. В частности, это подразумевает подразумеваемые гарантии пригодности для купли-связи или пригодности для определенной цели. В этой статье предполагается, что вы знакомы с языком программирования, который демонстрируется, и средствами, используемыми для создания и от debug procedures. Специалисты службы поддержки Майкрософт могут объяснить функциональные возможности конкретной процедуры, но не будут изменять эти примеры, чтобы предоставить дополнительные функции или процедуры по построению с учетом ваших конкретных требований. В примерах Visual Basic ниже покажите, как выбрать разные диапазоны.
Если вы знаете следующую ячейку (в данном примере — ячейка C1) и хотите выбрать ее до последней ячейки (в том же столбце), которая имеет данные, но не знает этот адрес, используйте следующий код:
Примечание. Макрос SelectRangeDown предполагает, что данные не должны быть соединимы. В противном случае, если в выбранном столбце данных есть пустые ячейки, этот макрос может не выбрать все ячейки в этом столбце.
Если данные начинаются с ячейки C1, но не являются неровными в этом столбце, используйте следующий макрос в Microsoft Office Excel 2003 и более ранних версиях Excel:
Так как Microsoft Office Excel 2007 поддерживает 1 048 576 строк, используйте следующий макрос в Excel 2007:
Если вы хотите выбрать активную ячейку вниз и все столбцы справа (предполагается, что данные есть во всех строках и столбцах), используйте следующий код:
Если вы знаете следующую следующую ячейку (в этом примере — ячейка D1) и хотите выбрать ее вниз и справа, используйте следующий код:
Чтобы выбрать все данные в текущем регионе, используйте следующий код:
В примерах, которые содержатся в этой статье, покажите, как выбрать различные диапазоны на активном компьютере текущей книги.
Чтобы получить дополнительные сведения о том, как выбрать диапазоны с помощью Visual Basic для приложений (и для более сложных примеров), щелкните номер следующей статьи, чтобы просмотреть статью в базе знаний Майкрософт:
Доброго времени суток.
Может кто-нибудь написать макрос для заливки целой строки по условию?
Имеем таблицу, к примеру из 40 тысяч строк. Необходимо выполнить поиск по слову "недвижимость". Залить красным цветом все строки, где встретиться искомое слово. Заранее спасибо. Либо, может это можно как-то с помощью УФ выполнить. Выручите, пожалуйста.
Макрос заливки всей строки по условию в ячейке
Здравствуйте! Есть таблица: Пытаюсь написать макрос который должен закрашивать всю строку.
Копирование всей строки по условию одной из ячеек
Доброго времени суток. Имею таблицу со списком людей. Нужно определить людей конкретного года.
Выделение всей строки в таблице
Реализовал функционал, чтобы при поиске искал соот. строку, но выделять могу только один столбец, а.
Выделение в ListView всей строки
Есть список с колонками. Каждый элемент списка (ряд) представлен несколькими контролами.
eQyes, вы это тоже можете, включив запись макроса в меню СЕРВИС (2003) или Разработчик(2007). Затем делаете вручную, нужные вам действия. Затем ОСТАНОВИТЬ ЗАПИСЬ и в макросах смотрите, сформированный экселем макрос. Пользуйтесь этим почаще быстрее научитесь делать такие простые вещи самостоятельно. А пока получите макрос. Считаем, что "недвижимость" в первом столбце.
МВТ, На значительном количестве ячеек, содержащих искомый текст, такой подход приведёт к возникновению ошибки, ибо Len(s) не должна превышать 255 символов.
pashulka, да, что-то не подумал . Спасибо за замечание. Как вариант, можно в коллекцию строки собирать, все равно должно быть значительно быстрее, чем поячеечно перебирать данные или даже использовать Union
Если из 40000 - 10000 ячеек будут с недвижимостью, то тут Union не самый лучший вариант, а если 100, то можно его и помучить
P.S. Кстати, при переборе ячеек не лишним будет использовать :
Добавлено через 1 час 21 минуту
Благодаря замечаниям уважаемого pashulka были выявлены несколько досадных неточностей в коде. Прикладываю исправленный вариант
Господа, вы рассуждаете о такой пустяковой задаче, как о проблеме века. Судя по всему, автор темы мало чего знает о VBA и, когда я пишу ответы на вопрос, то стараюсь наметить возможные пути (далеко не все) для решения задачи и достаточно простые, надеясь, что это станет толчком к самостоятельным действиям автора. Я думаю, что сейчас он оценивает ваши алгоритмы с точки зрения "работает-не работает". А у вас этот "пустячок" как зеркало, чтобы полюбоваться на себя. Алгоритмы мне понравились, надеюсь, что и автор темы в них разберётся. С наилучшими пожеланиями. Burk
P.S. Вскоре создам новую, более серьёзную тему, если вам известно её решение В НУЖНОМ МНЕ АСПЕКТЕ буду признателен.
Выделение всей строки в контроле TextBox
Представляю на ваш суд метод выделения в текстбоксе строки, в которой находится курсор, целиком и.
Реализовать выделение всей строки MSFlexGrid
Здравствуйте! Может кто нибудь подскажет как в MSFlexGrid сделать так, что бы строка выделялась.
Выделение всей строки синим цветом в StringGrid
Здравствуйте. Как сделать выделение всей строки синим цветом в StringGrid Есть свойство.
Как выделить всю / целую строку при прокрутке на листе Excel?
Если у вас большой рабочий лист с несколькими столбцами, вам будет сложно различить данные в этой строке. В этом случае вы можете выделить всю строку активной ячейки, чтобы вы могли быстро и легко просмотреть данные в этой строке при прокрутке вниз горизонтальной полосы прокрутки. В этой статье я расскажу о некоторых трюках, которые помогут вам решить эту проблему. .
Выделите всю строку при прокрутке с помощью кода VBA
Следующий код VBA может помочь вам динамически выделить строку выбранной ячейки, пожалуйста, сделайте следующее:
1. Активируйте рабочий лист, на котором вы хотите выделить всю строку выбранной ячейки, а затем щелкните правой кнопкой мыши вкладку листа и выберите Просмотреть код из контекстного меню, см. снимок экрана:
2. В открытом Microsoft Visual Basic для приложений окна, скопируйте следующий код в этот пустой модуль:
Код VBA: выделять всю строку при прокрутке
3. Затем сохраните и закройте этот код, теперь, когда вы щелкаете ячейку, вся строка этой выбранной ячейки будет выделена, как показано на следующих снимках экрана:
Ноты:
1. Вы можете изменить цвет выделения на другой, который вам нравится в этом скрипте « Цель.EntireRow.Interior.ColorIndex = 8 ”, Измените номер 8 к другому цветному индексу.
2. Если вы хотите отключить этот код, вам просто нужно перейти в Microsoft Visual Basic для приложений окно и удалите код.
3. Этот код также может выделять строки выбранного диапазона ячеек в следующем результате:
4. Этот код применяется только к текущему листу.
5. Если на вашем листе есть несколько цветных ячеек, при применении этого кода цвет ячеек будет потерян.
Выделите всю строку / столбец / строку и столбец при прокрутке с помощью Kutools for Excel
Если вы хотите попробовать новый инструмент - Kutools for Excel, С его Макет для чтения, вы можете легко выделить всю строку или весь столбец либо строку и столбец активной ячейки.
После установки Kutools for Excel, выполните следующие действия:
1. Выберите ячейку или диапазон ячеек, в которых вы хотите выделить строки.
2. Нажмите Кутулс > Макет для чтения раскрывающаяся кнопка> Чтение настроек макета, см. снимок экрана:
3. В Чтение настроек макета диалоговом окне выберите один тип, который вам нужно выделить строку или столбец под Формы раздел, а затем укажите стиль этой формы, в то же время вы можете выбрать другие параметры, такие как цвет или прозрачность, как вам нужно, см. снимок экрана:
Советы: Если вы хотите выделить строку и столбец выбранной ячейки, выберите Крест-накрест под Формы , и выберите Вертикальная линия чтобы выделить весь столбец активной ячейки.
4. После завершения настроек в диалоговом окне нажмите Ok, и теперь, когда вы щелкаете ячейку, вся строка будет выделена сразу. И он будет динамически перемещаться по мере изменения выбранных ячеек.
Ноты:
1. Вы можете отменить эту утилиту, сняв флажок Макет для чтения снова.
2. Это Макет для чтения Эта функция применяется ко всем листам в вашей книге.
3. Это Макет для чтения функция будет отключена при следующем запуске книги.
4. С помощью этой утилиты ваша цветная ячейка будет сохранена.
Демо: выделите всю строку / столбец / строку и столбец при прокрутке с помощью Kutools for Excel
Kutools for Excel: с более чем 300 удобными надстройками Excel, которые можно попробовать бесплатно без ограничений в течение 30 дней. Загрузите и бесплатную пробную версию прямо сейчас!
Как автоматически выделить строку и столбец активной ячейки в Excel?
Когда вы просматриваете большой рабочий лист с большим количеством данных, вы можете выделить строку и столбец выбранной ячейки, чтобы вы могли легко и интуитивно прочитать данные, чтобы избежать их неправильного чтения. Здесь я могу познакомить вас с некоторыми интересными трюками, чтобы выделить строку и столбец текущей ячейки, когда ячейка изменяется, столбец и строка новой ячейки выделяются автоматически, как на следующих снимках экрана:
One click to highlight row and column of selected cell in Excel:
Kutools for Excel's Reading Layout utility helps you quickly highlight row and column of selected cell in Excel. See screenshot:
Kutools for Excel: with more than 200 handy Excel add-ins, free to try with no limitation in 60 days. Download the free trial Now!
- Reuse Anything: Add the most used or complex formulas, charts and anything else to your favorites, and quickly reuse them in the future.
- More than 20 text features: Extract Number from Text String; Extract or Remove Part of Texts; Convert Numbers and Currencies to English Words.
- Merge Tools : Multiple Workbooks and Sheets into One; Merge Multiple Cells/Rows/Columns Without Losing Data; Merge Duplicate Rows and Sum.
- Split Tools : Split Data into Multiple Sheets Based on Value; One Workbook to Multiple Excel, PDF or CSV Files; One Column to Multiple Columns.
- Paste Skipping Hidden/Filtered Rows; Count And Sum by Background Color ; Send Personalized Emails to Multiple Recipients in Bulk.
- Super Filter: Create advanced filter schemes and apply to any sheets; Sort by week, day, frequency and more; Filter by bold, formulas, comment.
- More than 300 powerful features; Works with Office 2007-2019 and 365; Supports all languages; Easy deploying in your enterprise or organization.
Автоматическое выделение строки и столбца выбранной ячейки с кодом VBA
Следующий код VBA может помочь вам автоматически выделить весь столбец и строку текущей ячейки на листе, выполните следующие действия:
1. Откройте рабочий лист, вы автоматически выделите строку и столбец активной ячейки, щелкните правой кнопкой мыши вкладку листа и выберите Просмотреть код из контекстного меню.
2. Затем скопируйте и вставьте следующий код VBA в пустое окно кода:
Код VBA: автоматическое выделение строки и столбца выбранной ячейки
3, Затем нажмите другой + Q вместе, чтобы вернуться на рабочий лист, теперь, когда вы выбираете ячейку, вся строка и столбец этой ячейки выделяются. И он будет динамически перемещаться по мере изменения выбранной ячейки.
Ноты:
- 1. В приведенном выше коде вы можете изменить .Колориндекс = 6 цвет на другой цвет, который вам нравится.
- 2. Этот код VBA применяется только к листу, который вы выбрали на шаге 2 выше.
- 3. Если вы не хотите снова выделять столбец и строку выбранной ячейки, вам необходимо удалить указанный выше VBA и установить отсутствие заливки для выбранной строки и столбца, нажав Главная >Цвет заливки >Без заливки.
- 4. Если на вашем листе есть несколько цветных ячеек, цвет будет потерян, когда вы щелкнете по ячейке, а затем перейдете к другой ячейке.
Автоматическое выделение строки и столбца выбранной ячейки с помощью Kutools for Excel
Если вы новичок в VBA, здесь рекомендую Kutools for Excel's Макет для чтения утилита. Эта утилита помогает легко выделить строку и столбец выбранной ячейки в Excel, как показано в демонстрации ниже. Скачайте и попробуйте прямо сейчас! (30-дневная бесплатная трасса)
Посмотрим, как применить Kutools for ExcelАвтора Макет для чтения возможность выделять целые строки и столбцы диапазона ячеек.
1. Нажмите Кутулс > Макет для чтения. Смотрите скриншот:
Когда макет чтения включен, вы можете видеть, что строка и столбец активной ячейки сразу выделяются. И он будет динамически перемещаться по мере изменения выбранных ячеек.
Заметки:
- 1. Вы можете изменить настройки формата чтения в соответствии с вашими потребностями, как показано на скриншоте ниже.
- 2. Вы можете отменить эту утилиту, сняв флажок Макет для чтения под Reading выпадающий список.
- 3. Это Просмотр макета чтения Эта функция применяется ко всем листам в вашей книге.
- 4. Это Просмотр макета чтения функция будет отключена при следующем запуске книги.
Если вы хотите получить бесплатную (30-дневную) пробную версию этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.
Читайте также: