Выделить всю строку excel миф

Содержание

  1. Выделение активной ячейки, строки или столбца
  2. Выделение активной ячейки
  3. Выделение всей строки и столбца, содержащих активную ячейку
  4. Выделение строки и столбца, содержащих активную ячейку, в текущей области
  5. Об участнике
  6. Поддержка и обратная связь
  7. Выбор ячеек и диапазонов с помощью процедур Visual Basic в Excel
  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. Использование метода Select и свойства Selection
  33. Выбор ячеек на активном листе
  34. Активация ячейки в выделенном фрагменте
  35. Поддержка и обратная связь
  36. Использование VBA для выбора и выделения строк Excel
  37. Макрос VBA – выделение Строка для дополнений ИЛИ ячейка для изменений

Выделение активной ячейки, строки или столбца

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

Пример кода предоставил: Том Уртис, Atlas Programming Management

Выделение активной ячейки

В следующем примере кода показано, как удалить цвет во всех ячейках листа, присвоив свойству ColorIndex значение 0, а затем выделить активную ячейку, присвоив свойству ColorIndex значение 8 (бирюзовый).

Выделение всей строки и столбца, содержащих активную ячейку

В следующем примере кода показано, как удалить цвет во всех ячейках листа, присвоив свойству ColorIndex значение 0, а затем выделить всю строку и столбец, содержащие активную ячейку, с помощью свойств EntireRow и EntireColumn.

Выделение строки и столбца, содержащих активную ячейку, в текущей области

В следующем примере кода показано, как удалить цвет во всех ячейках листа, присвоив свойству ColorIndex значение 0, а затем в текущей области выделить строку и столбец, содержащие активную ячейку, используя свойство CurrentRegion объекта Range.

Об участнике

Том Уртис, MVP — основатель компании Atlas Programming Management, создающей полноценные бизнес-решения для Microsoft Office и Excel в Кремниевой долине. Том обладает больше чем 25 годами опыта управления бизнесом и разработки приложений для Microsoft Office, а также является соавтором книги «Holy Macro! It’s 2,500 Excel VBA Examples».

Поддержка и обратная связь

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

Источник

Выбор ячеек и диапазонов с помощью процедур Visual Basic в Excel

Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Данное положение включает, но не ограничивается этим, подразумеваемые гарантии товарной пригодности или соответствия отдельной задаче. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Специалисты технической поддержки Майкрософт могут пояснить работу той или иной процедуры, но модификация примеров и их адаптация к задачам разработчика не предусмотрена. В примерах в этой статье используются методы Visual Basic, перечисленные в следующей таблице.

В примерах в этой статье используются свойства, приведенные в следующей таблице.

Выбор ячейки на активном листе

Чтобы выбрать ячейку D5 на активном листе, можно использовать один из следующих примеров:

Выбор ячейки на другом листе в той же книге

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

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

Выбор ячейки на листе в другой книге

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

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

Выбор диапазона ячеек на активном листе

Чтобы выбрать диапазон C2:D10 на активном листе, можно использовать любой из следующих примеров:

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

Чтобы выбрать диапазон D3:E11 на другом листе в той же книге, можно использовать один из следующих примеров:

Кроме того, можно активировать лист, а затем выбрать диапазон с помощью метода 4, приведенного выше:

Выбор диапазона ячеек на листе в другой книге

Чтобы выбрать диапазон E4:F12 на листе в другой книге, можно использовать один из следующих примеров:

Кроме того, можно активировать лист, а затем выбрать диапазон с помощью метода 4, приведенного выше:

Выбор именованного диапазона на активном листе

Чтобы выбрать именованный диапазон «Тест» на активном листе, можно использовать один из следующих примеров:

Выбор именованного диапазона на другом листе в той же книге

Чтобы выбрать именованный диапазон «Тест» на другом листе в той же книге, можно использовать следующий пример:

Или можно активировать лист, а затем использовать метод 7 выше, чтобы выбрать именованный диапазон:

Выбор именованного диапазона на листе в другой книге

Чтобы выбрать именованный диапазон «Тест» на листе в другой книге, можно использовать следующий пример:

Или можно активировать лист, а затем использовать метод 7 выше, чтобы выбрать именованный диапазон:

Выбор ячейки относительно активной ячейки

Чтобы выбрать ячейку с пятью строками ниже и четырьмя столбцами слева от активной ячейки, можно использовать следующий пример:

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

При попытке выбрать ячейку, которая находится вне листа, произойдет ошибка. Первый пример, показанный выше, вернет ошибку, если активная ячейка находится в столбцах A–D, так как перемещение четырех столбцов влево приведет к переходу активной ячейки на недопустимый адрес ячейки.

Выбор ячейки относительно другой (не активной) ячейки

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

Выбор смещения диапазона ячеек из указанного диапазона

Чтобы выбрать диапазон ячеек того же размера, что и именованный диапазон «Тест», но сдвинув четыре строки вниз и три столбца вправо, можно использовать следующий пример:

Если именованный диапазон находится на другом (не активном) листе, сначала активируйте этот лист, а затем выберите диапазон, используя следующий пример:

Выбор указанного диапазона и изменение его размера

Чтобы выбрать именованный диапазон «База данных», а затем расширить выделение на пять строк, можно использовать следующий пример:

Выбор указанного диапазона, его смещение и изменение размера

Чтобы выбрать диапазон из четырех строк ниже и трех столбцов справа от именованного диапазона «База данных» и включить две строки и один столбец больше именованного диапазона, можно использовать следующий пример:

Выбор объединения двух или более указанных диапазонов

Чтобы выбрать объединение (то есть объединенную область) двух именованных диапазонов «Тест» и «Образец», можно использовать следующий пример:

Значение , чтобы оба диапазона были на одном листе для работы в этом примере. Обратите внимание, что метод Union не работает на разных листах. Например, эта строка работает нормально.

возвращает сообщение об ошибке:

Сбой метода Union класса приложения

Выбор пересечения двух или более указанных диапазонов

Чтобы выбрать пересечение двух именованных диапазонов «Тест» и «Образец», можно использовать следующий пример:

Обратите внимание, что для работы в этом примере оба диапазона должны находиться на одном листе.

Примеры 17–21 в этой статье относятся к следующему примеру набора данных. В каждом примере указывается диапазон ячеек в выборке данных, которые будут выбраны.

Выбор последней ячейки столбца непрерывных данных

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

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

Выбор пустой ячейки в нижней части столбца непрерывных данных

Чтобы выбрать ячейку под диапазоном смежных ячеек, используйте следующий пример:

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

Выбор целого диапазона смежных ячеек в столбце

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

При использовании этого кода с образцом таблицы будут выделены ячейки A1–A4.

Как выбрать весь диапазон несмежных ячеек в столбце

Чтобы выбрать диапазон несмежных ячеек, используйте один из следующих примеров:

При использовании этого кода с образцом таблицы будут выделены ячейки A1–A6.

Выбор прямоугольного диапазона ячеек

Чтобы выбрать прямоугольный диапазон ячеек вокруг ячейки, используйте метод CurrentRegion. Диапазон, выбранный методом CurrentRegion, — это область, ограниченная любым сочетанием пустых строк и пустых столбцов. Ниже приведен пример использования метода CurrentRegion.

Этот код будет выбирать ячейки A1–C4. Ниже перечислены другие примеры выбора того же диапазона ячеек.

В некоторых случаях может потребоваться выбрать ячейки A1–C6. В этом примере метод CurrentRegion не будет работать из-за пустой строки в строке 5. В следующих примерах будут выделены все ячейки:

Выбор нескольких несмежных столбцов разной длины

Чтобы выбрать несколько несмежных столбцов разной длины, используйте следующий пример таблицы и макроса:

При использовании этого кода с образцом таблицы будут выбраны ячейки A1:A3 и C1:C6.

Примечания к примерам

Свойство ActiveSheet обычно можно опустить, так как оно подразумевается, если конкретный лист не называется. Например, вместо

вы можете использовать:

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

При использовании метода Application.Goto, если вы хотите использовать два метода Cells в методе Range, если указанный диапазон находится на другом (не активном) листе, необходимо каждый раз включать объект Sheets. Например:

Для любого элемента в кавычках (например, именованного диапазона Test) можно также использовать переменную, значение которой является текстовой строкой. Например, вместо

Источник

Выбор и активация ячеек

В Microsoft Excel обычно выбирается ячейка или ячейки, а затем выполняется действие, например форматирование ячеек или ввод значений. В Visual Basic обычно не требуется выбирать ячейки перед их изменением.

Например, чтобы ввести формулу в ячейку D6 с помощью Visual Basic, не нужно выбирать диапазон D6. Просто возвратите объект Range для этой ячейки, а затем присвойте свойству Formula нужную формулу, как показано в следующем примере.

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

Использование метода Select и свойства Selection

Метод Select активирует листы и объекты на листах; свойство Selection возвращает объект, представляющий текущее выделение на активном листе в активной книге. Перед использованием свойства Selection необходимо активировать книгу, активировать или выбрать лист, а затем выбрать диапазон (или другой объект) с помощью метода Select.

Средство записи макросов часто создает макрос, использующий метод Select и свойство Selection. Следующая процедура Sub была создана с помощью средства записи макросов и показывает, как Select и Selection работают вместе.

В следующем примере выполняется та же задача без активации или выбора листа или ячеек.

Выбор ячеек на активном листе

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

Активация ячейки в выделенном фрагменте

Используйте метод Activate для активации ячейки в выделенном фрагменте. Активной может быть только одна ячейка, даже если выделен диапазон ячеек. Следующая процедура выделяет диапазон и активирует ячейку в диапазоне, не изменяя выделенный фрагмент.

Поддержка и обратная связь

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

Источник

Использование VBA для выбора и выделения строк Excel

Как указать Excel выделять строки по их номеру. Например, скажем, я хотел выделить строки 6, 10, 150, 201. Спасибо.

Вот еще один, основанный на .EntireRow.Interior.ColorIndex

Mote. ‘не ограничивает вас вводом номеров строк, но дает пользователю гибкость в выборе строк во время выполнения.

FOLLOWUP

Есть ли способ написать макрос для чтения номеров строк из список и выделить строки?

Да, есть способ. Скажем, список в ячейках от A1 до A10, тогда вы можете использовать этот код

В качестве альтернативы ответу Motes вы можете использовать условное форматирование.

Например: выберите A1: J500, Условное форматирование >> Новое правило >> Использовать формулу …

Для формулы введите: = OR (ROW () = 6, ROW () = 10, ROW () = 150, ROW () = 201)

В качестве альтернативы ответу Моутса вы можете использовать условное форматирование.

Например: выберите A1: J500, Условное форматирование >> Новое правило >> Использовать формулу …

Для формулы введите: = OR (ROW () = 6, ROW () = 10, ROW () = 150, ROW () = 201)

Для базового кода VBA вы всегда можете начать запись макроса, выполнить действие, остановить запись, посмотреть, какой код был сгенерирован, а затем очистить его, чтобы сделать то, что вы хотите. Например, запись действия выделения строки (установка значения Interior.Color) дает вам:

Команды выбора и посторонние внутренние свойства могут быть удалены дает вам:

Добавление в строку нескольких выберите:

  • Запись макроса
  • Просмотр версии Excel
  • Используйте/редактируйте нужный код

Для базового кода VBA вы всегда можете начать запись макроса, выполнить действие, остановить запись, посмотреть, какой код был сгенерирован, и затем очистите это, чтобы делать то, что вы хотите. Например, запись действия выделения строки (установка значения Interior.Color) дает вам:

Команды выбора и посторонние внутренние свойства могут быть удалены дает вам:

Добавление в строку нескольких выберите:

  • Запись макроса
  • Просмотр версии Excel
  • Используйте/редактируйте нужный код

Обновление: не понял дату на этом, но подумал, что добавлю это, поскольку это имеет отношение к выбранному ответу.

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

Обновление: не понял дату на этом, но подумал, что добавлю это, так как это имеет отношение к выбранному ответу.

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

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

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

Вы можете добиться того же, используя условное форматирование

  • помещаю список значений в столбец (я использую отдельную вкладку и даю списку имя)
  • в условном форматировании – Новое правило – «использовать формулу для определения с ячейками для форматирования»
  • прочтите эту статью http://www.howtogeek.com/howto/45670/how-to-highlight-a-row-in-excel-using-conditional-formatting/

правило использует vlookup в формуле- = $ A2 = VLOOKUP ($ A2, list, 1, FALSE)

Вы могли бы добиться того же, используя условное форматирование

  • put list значений в столбце (я использую отдельную вкладку и даю списку имя)
  • при условном форматировании – Новое правило – «использовать формулу для определения с ячейками для форматирования»
  • прочтите эту статью http://www.howtogeek.com/howto/45670/how-to-highlight-a-row-in-excel-using-conditional-formatting/
  • правило использует vlookup в формуле- = $ A2 = VLOOKUP ($ A2, list, 1, FALSE)

Макрос VBA – выделение Строка для дополнений ИЛИ ячейка для изменений

Хорошо, у меня есть шаблон для другого отдел, который я развиваю. Мне нужно добавить условное форматирование через VBA. Мне удалось найти код на форумах и модифицировать его. Он как есть соответствует одному из двух моих требований, но есть одно изменение, которое я хотел бы (диапазон). Мне просто нужен второй код или модификация этого кода. Я все еще новичок в кодировании Worksheet_Change. Код, который я нашел, работает для «часть 2 ниже»

Часть 1 – Любая НОВАЯ запись потребует выделения всей строки (я рекомендую оранжевым или желтым … без предпочтений).
– Диапазон данных – столбцы A – DD
– Количество строк будет меняться от недели к неделе, поскольку это глобальная книга (поэтому я бы предпочел не указывать конкретный диапазон)
– Ключевая ячейка, которая будет указывать на запись, в столбце C находится идентификатор сотрудника.
– Например, сейчас у меня 1377 строк данных
– Если я добавлю что-то в ячейку A1378 или B1378, моя “Часть 2 “VBA включится и выделит ячейку (цвет # 38) розовым или чем-то еще. Если данные были введены в ячейку C1378, то вся строка (A1378: DD1378) будет выделена желтым (или оранжевым).
– Я хочу, чтобы сценарий «добавления» запускался изначально
– Многие из этих ячеек являются формулами в других столбцах, вероятно, что другая ячейка в диапазоне AA: DD, хотя строка была добавлена, может потребовать от пользователя перезаписать ее.
– В этом случае строка будет желтый (или оранжевый), чтобы указать, что это была добавленная строка, но тогда он также может содержать несколько ячеек lpink для обозначения перезаписанных ячеек

Часть 2 – отдельные ячейки меняются на розовый (цвет # 38) при изменении.
– Во второй строке кода, мне бы хотелось это, если диапазон не ограничен
– Этот процесс существенно растет
– Расчет заработной платы за две недели имеет в отличии 25000 строк
– Диапазон может зависеть от того, имеет значение в столбце C
– Столбец C – это идентификатор сотрудника, который является движущей силой всех транзакций

  1. Private Sub Worksheet_Change (ByVal Целевой как диапазон)
  2. Const WS_RANGE As String = “A2: DD2500”
  3. При ошибке GoTo ws_exit:
  4. Application.EnableEvents = False
  5. Если не пересекается (Target, Me.Range (WS_RANGE)), то ничего не значит
  6. С целью
  7. .Interior.ColorIndex = 38
  8. Завершить на
  9. End If
  10. ws_exit:
  11. Application.EnableEvents = True
  12. End Sub

Может вы публикуете образец файла от 10 до 15 строк … (с анонимными данными …)

Мне кажется, что весь процесс необходимо пересматривать в свете ваших 650 000 записей в год …

Я создал частичный файл … не со всеми столбцами. Я думаю, что попал в колонку AD. Имена, адреса, имя сотрудников, ставки заработной платы … это все фиктивные данные, но они представляют собой тип даты, которая будет заполнена. Большинство типов данных, которые будут отображаться на этом листе, представляют собой числовые значения и суммы в долларах, а около 75% рабочего листа – формулы.. Теперь этот рабочий лист называется Sheet3 (хотя и не в этом примере), а кодовое имя также Sheet3. Я хотел бы иметь возможность использовать кодовое имя, а не имя листа, так как я не могу контролировать, решит ли пользователь переименовать лист.

Прикреплен ваш тестовый файл …

Быстро добавил щелчок правой кнопкой мыши, чтобы очистить все внутренние цвета …

Работает отлично. Я скорректировал скрипт для

, которые у вас есть для моего файла примера до 108 столбцов для моего фактического файла. Он по-прежнему работал отлично. Но потом я понял, что когда люди добавляются, у меня есть сценарий, который копирует формулы во все строки с данными. И это работает отлично … за исключением того, что теперь у меня есть ваш замечательный скрипт выделения, форматирование было перезаписано, потому что мой скрипт “формулы” использует для этого это “Автозаполнение”. Есть ли лучший способ, чтобы этот сценарий мог копировать формулы (первая строка данных всегда – это строка 2, заголовки в строке 1) и копировать полностью вниз? Мне нравится ваш сценарий, и это именно то, что мне нужно. Как и этот скрипт для формул … Мне просто нужен способ, чтобы мой скрипт UpdateFormulas НЕ перезаписывал форматы, созданные вашим выделением. Как я, возможно, уже упоминал, этот шаблон предназначен для другого отдела, поэтому такие вещи должны быть на месте. Ниже мой код для обновления всех формул при добавлении данных. Пожалуйста, простите за грубое кодирование, поскольку я еще новичок.

  1. Sub UpdateFormulas ()
  2. ‘Оптимизация скорости макросов
  3. Application.ScreenUpdating = False
  4. Application.EnableEvents = False
  5. Application.Calculation = xlCalculationManual
  6. ‘Имя листа и расположение столбца, которые нужно удалить
  7. Sheet3.Select
  8. ‘Диапазон ячеек, в которых находятся формулы
  9. ‘ Должен существовать столбец для обозначения формулы.
  10. Диапазон (“I2”) .AutoFill Destination: = Range (“I2: I” & Cells (Rows.Count, “B”). End (xlUp) .Row)
  11. Range (“AC2”). Назначение автозаполнения: = Range (“AC2: AC” & Cells (Rows.Count, “B”). End (xlUp) .Row)
  12. Range (“AJ2″). Назначение автозаполнения: = Range (” AJ2: AJ “& Cells (Rows.Count,” B “). End (xlUp) .Row)
  13. Range (” AL2 “). Назначение автозаполнения: = Range (” AL2: AL ” & Ячейки (Rows.Count, “B”). End (xlUp) .Row)
  14. Range (“AT2”). Автозаполнение места назначения ция: = Range (“AT2: AT” & Cells (Rows.Count, “B”). End (xlUp) .Row)
  15. Range (“BH2: CH2”). Назначение автозаполнения: = Диапазон (“BH2: CH” & Cells (Rows.Count, “B”). End (xlUp) .Row)
  16. Range (“CJ2: DD2”). Назначение автозаполнения: = Диапазон («CJ2: DD» и ячейки (Rows.Count, «B»). Конец (xlUp). Строка)
  17. ‘Имя листа и расположение столбца для удаления
  18. Sheet4.Select
  19. ‘Диапазон ячеек, в которых находятся формулы
  20. ‘ Должен существовать столбец для обозначения формулы.
  21. Диапазон (“I2”). Назначение автозаполнения : = Range (“I2: I” & Cells (Rows.Count, “B”). End (xlUp) .Row)
  22. Range (“AC2”). Назначение автозаполнения: = Range ( «AC2: AC» и ячейки (Rows.Count, «B»). End (xlUp) .Row)
  23. Range («AJ2»). Назначение автозаполнения: = Range («AJ2: AJ “& Cells (Rows.Count,” B “). End (xlUp) .Row)
  24. Range (” AL2 “). Назначение автозаполнения: = Range (” AL2: AL “& Cells ( Rows.Count, “B”). End (xlUp) .Row)
  25. Range (“AT2”). Назначение автозаполнения: = Range (“AT2: AT” & Cells (Rows.Count, “B”). End (xlUp) .Row)
  26. Range (“BH2: CH2”). Назначение автозаполнения: = Range (“BH2: CH” & Cells (Rows.Count, “B “) .End (xlUp) .Row)
  27. Range (” CJ2: DE2 “). Назначение автозаполнения: = Range (” CJ2: DE “& Cells (Rows.Count,” B “) .End (xlUp) .Row)
  28. ‘активирует лист с определенным именем
  29. ‘Activ Включает вкладку «Основные» (Sheet2)
  30. Sheet2.Activate
  31. ResetSettings:
  32. ‘Сбросить настройки макрооптимизации
  33. Application.EnableEvents = True
  34. Application.Calculation = xlCalculationAutomatic
  35. Application.ScreenUpdating = True
  36. End Sub

ПРИМЕЧАНИЕ. Я просто проводил дополнительное тестирование кода выделения “добавить” и заметил кое-что, что я не знаю, сможете ли вы добавить. Если мы добавим Джона Смита, все его данные и формулы, строка будет оранжевой … но если одна ячейка должна быть перезаписана, она все равно должна измениться на розовый (эта одна ячейка), несмотря на то, что строка будет оранжевой. Перезапись отдельных ячеек в основном происходит, когда в ячейке есть формула, которая заменяется значением или другой формулой. Мы должны видеть их визуально, отсюда и розовый цвет. Я должен был это указать. Очевидно, вы не можете знать, о чем я думаю, извините за это.

Рад слышать, что вы движетесь в правильном направлении …

Что касается макроса UpdateFormulas … есть несколько возможностей …

Вы могли бы преобразовать свою базу данных в таблицу

Однако почему вы копируете из строки 2 полностью вниз?

Все существующие строки уже обновлены …

Запуск с последней использованной строки повысит производительность вашего листа …

Относительно вашего способа добавления новых записей: как это сделано …?

Мне нужно сохранить вещи в основном в том же формате, поскольку этот шаблон будет использоваться несколькими другими пользователями. В моей компании есть строгие протоколы.. даже глупые вещи. Чтобы преобразовать базу данных в таблицу, мне нужно получить разрешение от «сильных мира сего». Я мелкий подрядчик, поэтому мне сейчас нужно «раскрашивать между строк».

– Почему я копирую из строки 2 вниз для формул? Честно говоря, потому что я не знаю, как закодировать его для копирования из последней строки, содержащей формулы, вниз. Это был бы лучший способ. Но поскольку я еще новичок, а объем данных постоянно меняется, я просто понятия не имел. Я бы предпочел вставить формулы из последней строки существующей строки формул. Я согласен, начиная с последнего ряда формул была бы лучшая производительность, это сводится к недостатку знаний с моей стороны.
– Добавляя новые записи, я, честно говоря, не знаю, это не процесс, я полностью знаком с. Я – ОЧЕНЬ подробный процесс расчета заработной платы для государственных контрактов. Существует множество переменных, и иногда расчет формулы требует перезаписи в виде значения или исправленной формулы. Я просмотрел предыдущие книги, и там есть множество выделенных ячеек и строк, которые были раскрашены вручную для этой цели. Это происходит постоянно (и пользователи всегда выбирают ВСЮ строку, а не только 103 фактических столбца в пределах диапазона).

Моя роль – оптимизировать и автоматизировать процесс. Конечный пользователь тратит так много времени на форматирование, вставку столбцов, копирование и вставку формул из предыдущей книги, и этот список можно продолжить! Выделение измененных ячеек и строк

Честно говоря … мне вас очень жаль … .

Очень грустно (и почти невероятно …) слышать, что вы не имеете права использовать Excel таким образом, чтобы каждый мог работать более продуктивно …

Хочу пожелать вам удачи в попытках оптимизировать ваш процесс … в рамках наложенных на вас глупых ограничений …: smash:

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

Не стесняйтесь приходить назад на форум … для новых вопросов … надеюсь, с меньшими ограничениями …: wink:

Карим,
Большое спасибо! Некоторые вещи требуют одобрения нашей штаб-квартиры в другой стране … и, честно говоря, это просто глупо! Но мне нужна зарплата. И да, я вернусь. Еще раз спасибо за вашу помощь!

Надеюсь, вы можете помочь. Был изменен запрос на этот макрос выделения. Код ниже – это то, что вы мне предоставили в последний раз. Мне нужно, чтобы эти макросы выполнялись ТОЛЬКО, когда пользователь делает что-то ВРУЧНУЮ с книгой. Если пользователь запускает макрос для импорта или копирования данных на листы в книге, ничего не должно выделяться. Однако, если пользователь вручную добавляет новую строку в книгу, эта строка (столбцы A-DD) будет выделена оранжевым цветом (индекс цвета 46). Я провел UAT с пользователем сегодня, и мне посоветовали, что пользователь выберет похожую строку и скопирует/вставит эту строку в 1-ю пустую строку, чтобы пользователь вручную изменил любые особенности. В этом случае вся строка (A-DD) должна быть оранжевой, а затем, когда каждая ячейка будет изменена пользователем, только эти ячейки будут розовыми.
Пользователь копирует запись сотрудника, вставляет в новую строка. Затем меняет имя сотрудника, emp #, дату начала, должность и т. Д. Только те измененные ячейки розового цвета, остальные остаются оранжевыми. Возможно ли это?

  1. Option Explicit
  2. Private Sub Worksheet_Change (ByVal Target As Range)
  3. Если Target.Row = 1, то выйдите из Sub
  4. Dim i As Double
  5. i = ActiveSheet.Cells (Application.Rows.Count , “A”). End (xlUp) .Row
  6. Application.Calculation = xlCalculationManual
  7. Application.EnableEvents = False
  8. Если Target.Row> i Then
  9. Range (Cells (Target.Row, 1), Cells (Target.Row, 108)). Interior.ColorIndex = 46
  10. ElseIf Target.Row
  11. Target.Interior.ColorIndex = 38 ‘
  12. End If
  13. Application.EnableEvents = True
  14. Application.Calculation = xlCalculationAutomatic
  15. End Sub
  16. Private Sub Worksheet_BeforeRightClick (ByVal Target As Range, Cancel As Boolean)
  17. ‘Щелкните правой кнопкой мыши, чтобы очистить цвета
  18. Если Target.Row = 1 Затем выйдите из Sub
  19. Dim i As Double
  20. i = ActiveSheet.Cells (Application.Rows.Count, “A”). End (xlUp) .Row
  21. Application.Calculation = xlCalculationManual
  22. Application.EnableEvents = False
  23. If Target.Row> i Then
  24. Range (Cells (Target.Row, 1), Cells (Target.Row, 108)). Interior.ColorIndex = xlNone
  25. ElseIf Target.Row
  26. Target.Interior.ColorIndex = xlNone
  27. End If
  28. Application.EnableEvents = True
  29. Application.Calculation = xlCalculationAutomatic
  30. Cancel = False
  31. End Sub

Как вы очень хорошо знаете, есть два типа макросов:

1. Стандартные макросы

2. Макросы событий

Стандарт требует, чтобы пользователь запускал запрос через меню, ярлык или кнопку

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

Итак, самое первое решение, которое вы должны принять, – какой маршрут вы хотите выбрать …

Затем второе решение связано с тем, что именно вам нужно отслеживать … и, следовательно, выделять …

Источник

Mehanik

1

27.12.2007, 18:03. Показов 13987. Ответов 5


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

Необходимо найти нужный текст в одной из ячеек Excel — это просто,
Выделить ячейку, в которой находится искомый текст — это еще проще,
а вот как выделить всю строку, содержащею ячейку с искомым текстом — это я сделать не смог.
Если кто знает как, помогите!!!
Заранее спасибо.

Programming

Эксперт

94731 / 64177 / 26122

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

Сообщений: 116,782

27.12.2007, 18:03

Ответы с готовыми решениями:

Как выделить всю текущую строку в Excel?
как выделить всю текущую строку? Excel. если извесно, что в строке 5 ячеек? спасибо

По значению в ячейке выделить определённым цветом всю строку
Добрый вечер! Ну, пожалуйста, необходим макрос:
В определённом столбце(R) если значение в ячейке…

Макрос: выделить строку по значению ячейки А1
Добрый день.

Подскажите, как решить задачу:

В ячейке А1 введено значение 10
Как через макрос…

Ячейки, содержащие положительные числа, выделить голубым, отрицательные – красным, нулевые – зелёным (Excel)
28. Excel : В выделенном диапазоне все ячейки, содержащие положительные числа, выделить голубым…

5

0 / 0 / 0

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

Сообщений: 539

27.12.2007, 18:17

2

А еще зовешься Механиком! :-)

Rows(‘4:4’).Select — выделяет строку под номером 4

Вот тебе удочка: Tools->Macro->Record New Macro. Потом сделай все ручками и просмотри код записанного макроса.

Удачи!



0



Mehanik

09.01.2008, 09:03

3

Все замечательно, толькло маленький нюанс, я зарание не знаю координат ячейки.

AGZ

0 / 0 / 0

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

Сообщений: 7

10.01.2008, 13:21

4

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Dim sym_str As String
'Функция определяет адрес выделенной ячейки (ряд, столбец)
Public Sub SelAdr(r, c)
sym_str = Selection.Address(ReferenceStyle:=xlR1C1, _
    RowAbsolute:=True, ColumnAbsolute:=True)
SA r, c
End Sub
'Функция определяет адреса 2-х выделенных ячеек (ряд1, столбец1, ряд2, столбец2)
Public Sub Sel2Adr(r1, c1, r2, c2)
SelAdr r1, c1
SA r2, c2
End Sub
'Вспомогательная для SelAdr Sel2Adr
Public Sub SA(r, c)
Do
r = Val(sym_str)
sym_str = Right(sym_str, Len(sym_str) - 1)
Loop While r = 0
s = Trim(Str(r))
sym_str = Right(sym_str, Len(sym_str) - Len(s))
c = Val(sym_str)
s = Trim(Str(c))
sym_str = Right(sym_str, Len(sym_str) - Len(s))
End Sub



0



M.H.Cobra

0 / 0 / 0

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

Сообщений: 23

10.01.2008, 15:17

5

Если переменный диапазон то:

Visual Basic
1
ThisWorkbook.Sheets('Лист1').Range(Cells(1, 1), Cells(1, 10)).Select

а если именно всю строку,

Visual Basic
1
2
3
numstr = 4
mystr$ = numstr & ':' & numstr
ThisWorkbook.Sheets('Eeno1').Range(mystr).Select

Успехов.



0



3 / 3 / 0

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

Сообщений: 359

30.04.2008, 11:35

6

ну вы блин даете!!!! особенно прикольно смотриться алгоритм предложенный AGZ-ом.А все гораздо проще:
ActiveCell.EntireRow.Select — выделяет строку в которой находиться курсор ввода
Cells(5, 1).EntireRow.Select — выделяет пятую строку

тоже справедливо и для столбцов (EntireColumn)



1



How can I tell Excel to highlight rows by their row number. For instance, let’s say I wanted row 6, 10, 150, 201 highlighted. Thanks.

Siddharth Rout's user avatar

asked Jun 6, 2012 at 22:12

Dan's user avatar

Here is another one based on Mote’s .EntireRow.Interior.ColorIndex

This one doesn’t restrict you to enter the row numbers but gives the user the flexibility to choose the rows at runtime.

Option Explicit

Sub Sample()
    Dim Ret As Range

    On Error Resume Next
    Set Ret = Application.InputBox("Please select the rows that you would like to color", "Color Rows", Type:=8)
    On Error GoTo 0

    If Not Ret Is Nothing Then Ret.EntireRow.Interior.ColorIndex = 6
End Sub

FOLLOWUP

Is there a way to write the macro to read the row numbers from a list and highlight the rows?

Yes there is a way. Let’s say the list in Cell A1 to A10 then you can use this code

Option Explicit

Sub Sample()
    Dim i As Long, sh As Worksheet

    On Error GoTo Whoa

    Application.ScreenUpdating = False

    '~~> Set this to the sheet where the rows need to be colored
    Set sh = Sheets("Sheet2")

    '~~> Change Sheet1 to the sheet which has the list
    With Sheets("Sheet1")
        For i = 1 To 10
            If Not Len(Trim(.Range("A" & i).Value)) = 0 And _
            IsNumeric(.Range("A" & i).Value) Then _
            sh.Rows(.Range("A" & i).Value).Interior.ColorIndex = 3 '<~~ Red
        Next i
    End With

LetsContinue:
    Application.ScreenUpdating = True
    Exit Sub
Whoa:
    MsgBox Err.Description
    Resume LetsContinue
End Sub

Reafidy's user avatar

Reafidy

8,2505 gold badges49 silver badges81 bronze badges

answered Jun 6, 2012 at 23:25

Siddharth Rout's user avatar

Siddharth RoutSiddharth Rout

146k17 gold badges206 silver badges250 bronze badges

2

As an alternative to Motes’ answer, you can use conditional formatting.

Eg: select A1:J500, Conditional formatting >> New rule >> Use a formula…

For the formula enter: =OR(ROW()=6, ROW()=10, ROW()=150, ROW()=201)

answered Jun 6, 2012 at 22:38

Tim Williams's user avatar

Tim WilliamsTim Williams

150k8 gold badges96 silver badges124 bronze badges

0

For basic VBA code, you can always start recording a macro, perform the action, stop recording, look at what code was generated, and then clean that up to do what you want. For example, recording the action of highlighting a row (setting the value of Interior.Color) gives you:

Rows("13:13").Select
Range("C13").Activate
With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = 65535
    .TintAndShade = 0
    .PatternTintAndShade = 0
End With

The selection commands and extraneous Interior properties can be removed giving you:

Rows("13:13").Interior.Color = 65535

Adding in the row multi-select:

Rows("6:6,10:10,150:150,201:201").Interior.Color = 65535

Summary:

  • Record macro
  • View Excel’s version
  • Use/Edit what code you need

answered Jun 6, 2012 at 22:36

Steve Konves's user avatar

Steve KonvesSteve Konves

2,6283 gold badges24 silver badges44 bronze badges

1

objWB.Cells(rowNum,201).EntireRow.Interior.ColorIndex = 6

etc

answered Jun 6, 2012 at 22:16

Motomotes's user avatar

MotomotesMotomotes

3,8941 gold badge25 silver badges24 bronze badges

1

Update: Didn’t realize the date on this, but thought I’d add this in since it was relevant to the chosen answer.

In addition to Siddharth Rout’s answer, since I don’t have enough rep to comment yet, you can dynamically figure out how many rows there are in your worksheet with these two lines. xlCellTypeConstants could be changed to another XlCellType constant that you need, and the range can always be changed to accommodate to your spreadsheet.

Dim numRows As Integer
numRows = Range("A2", Range("A1048576").End(xlUp)).SpecialCells(xlCellTypeConstants).Cells.Count

answered Mar 17, 2015 at 19:56

Kelsius's user avatar

KelsiusKelsius

4132 gold badges5 silver badges19 bronze badges

Sorry if it is not as concise or elegant as other answers, but it gets the job done. When I was writing code for my own application I needed to loop through my code. Also, instead of highlighting the entire row, I only needed to highlight a portion of the rows.

Sub Highlight()
Dim ThisWB As Workbook
Dim ThisWS As Worksheet
Dim rows(0 To 3) As Integer
Dim test As String

Set ThisWB = ActiveWorkbook
Set ThisWS = ThisWB.Sheets("Sheet1")

rows(0) = 6
rows(1) = 10
rows(2) = 150
rows(3) = 201

For i = 0 To 3
    test = "A" & rows(i) & ":H" & rows(i)
    ThisWS.Range(test).Interior.ColorIndex = 15
Next i

End Sub

answered Jun 28, 2016 at 19:45

Ray's user avatar

title ms.prod ms.assetid ms.date

Highlight the Active Cell, Row, or Column

excel

51a30ffb-77f2-4bd7-8eb6-b6781dc55d43

06/08/2017

Highlight the Active Cell, Row, or Column

The following code examples show ways to highlight the active cell or the rows and columns that contain the active cell. These examples use the SelectionChange event of the Worksheet object.

Sample code provided by: Tom Urtis, Atlas Programming Management

Highlighting the Active Cell

The following code example clears the color in all the cells on the worksheet by setting the ColorIndex property equal to 0, and then highlights the active cell by setting the ColorIndex property equal to 8 (Turquoise).

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.ScreenUpdating = False
    ' Clear the color of all the cells
    Cells.Interior.ColorIndex = 0
    ' Highlight the active cell
    Target.Interior.ColorIndex = 8
    Application.ScreenUpdating = True
End Sub

Highlighting the Entire Row and Column that Contain the Active Cell

The following code example clears the color in all the cells on the worksheet by setting the ColorIndex property equal to 0, and then highlights the entire row and column that contain the active cell by using the EntireRow and EntireColumn properties.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    Application.ScreenUpdating = False
    ' Clear the color of all the cells
    Cells.Interior.ColorIndex = 0
    With Target
        ' Highlight the entire row and column that contain the active cell
        .EntireRow.Interior.ColorIndex = 8
        .EntireColumn.Interior.ColorIndex = 8
    End With
    Application.ScreenUpdating = True
End Sub

Highlighting the Row and Column that Contain the Active Cell, Within the Current Region

The following code example clears the color in all the cells on the worksheet by setting the ColorIndex property equal to 0, and then highlights the row and column that contain the active cell, within the current region by using the CurrentRegion property of the Range object.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ' Clear the color of all the cells
    Cells.Interior.ColorIndex = 0
    If IsEmpty(Target) Or Target.Cells.Count > 1 Then Exit Sub
    Application.ScreenUpdating = False
    With ActiveCell
        ' Highlight the row and column that contain the active cell, within the current region
        Range(Cells(.Row, .CurrentRegion.Column), Cells(.Row, .CurrentRegion.Columns.Count + .CurrentRegion.Column - 1)).Interior.ColorIndex = 8
        Range(Cells(.CurrentRegion.Row, .Column), Cells(.CurrentRegion.Rows.Count + .CurrentRegion.Row - 1, .Column)).Interior.ColorIndex = 8
    End With
    Application.ScreenUpdating = True
End Sub

About the Contributor

MVP Tom Urtis is the founder of Atlas Programming Management, a full-service Microsoft Office and Excel business solutions company in Silicon Valley. Tom has over 25 years of experience in business management and developing Microsoft Office applications, and is the coauthor of «Holy Macro! It’s 2,500 Excel VBA Examples.»

! Знаю ячейку, а как выделить всю строку?

GAL
Обычный пользователь
Обычный пользователь
Аватара пользователя

 
Сообщения: 69
Зарегистрирован: 05.11.2004 (Пт) 15:57

! Знаю ячейку, а как выделить всю строку?

Привет!

Люди, подскажите, пожалуйста.. :wink:

Как выделить строку если я знаю ячейку в этой строке?

Заранее большое спасибо.


uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя

 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 06.04.2005 (Ср) 10:38

Rows(номер_строки).Select

Если в строке есть ячейки, объединенные с другими строками, выделится несколько строк.


GAL
Обычный пользователь
Обычный пользователь
Аватара пользователя

 
Сообщения: 69
Зарегистрирован: 05.11.2004 (Пт) 15:57

Сообщение GAL » 06.04.2005 (Ср) 10:49

Я не знаю номер строки.

Я немогу явно указать номер этой строки.

У меня в макросе запускается поиск, нахожу ячейку с таким-то содержимым и мне нужно выделить строку содержащую эту ячейку.

Есть такая возможность? :?:


GAL
Обычный пользователь
Обычный пользователь
Аватара пользователя

 
Сообщения: 69
Зарегистрирован: 05.11.2004 (Пт) 15:57

Сообщение GAL » 06.04.2005 (Ср) 10:52

Я незнаю номер строки.

Я немогу указать его явно.

У меня макрос ищет ячейку с таким-то содержимым и когда найдет мне нужно выделить строку содержащую эту ячейку.

Есть такая возможность? :?:


uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя

 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 06.04.2005 (Ср) 10:53

Да, если x — это твоя найденная ячейка, то она содержится в столбце x.Column и в строке x.Row. Соответственно, можешь выделить строку так:

Rows(x.Row).Select


GAL
Обычный пользователь
Обычный пользователь
Аватара пользователя

 
Сообщения: 69
Зарегистрирован: 05.11.2004 (Пт) 15:57

Сообщение GAL » 06.04.2005 (Ср) 11:03

Да, так получилось.:)

Спасибо uhm!


GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 06.04.2005 (Ср) 12:51

x.entirerow.select

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас



Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Выделить вставить столбец в excel
  • Выделить всех таблиц в word
  • Выделить все ячейки кроме выделенных в excel
  • Выделить все ячейки в excel которые содержат слово
  • Выделить все ячейки в excel команда

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии