Макрос excel форматирование таблица

В данном примере описаны макросы для автоматического форматирования или спроса формата для ячеек таблиц Excel средствами VBA.

VBA-макрос: заливка, шрифт, линии границ, ширина столбцов и высота строк

В процессе запыления данных сотрудниками отдела на некоторых листах были изменены форматы ячеек:

запыления планов работ.

Необходимо сбросить форматирование ячеек и сделать так чтобы на всех таблицах планов выполнения работ были одинаковые форматы отображения данных. Формат ячеек для исходной таблицы должен быть закреплен за шаблоном, чтобы можно было сделать сброс и применять заданный стиль оформления в дальнейшем.

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

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

Чтобы написать свой код макроса откройте специальный VBA-редактор в Excel: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» или нажмите комбинацию клавиш ALT+F11:

Код Visual Basic.

В редакторе создайте новый модуль выбрав инструмент «Insert»-«Module» и введите в него такой VBA-код макроса:

Sub SbrosFormat()
If TypeName(Selection) <> "Range" Then Exit Sub
With Selection
.HorizontalAlignment = xlVAlignCenter
.VerticalAlignment = xlVAlignCenter
.WrapText = True
.Borders.LineStyle = xlContinuous
.Borders.Weight = xlThin
.Font.ColorIndex = xlColorIndexAutomatic
.Interior.ColorIndex = xlColorIndexAutomatic
.Columns.AutoFit
.Rows.AutoFit
End With
End Sub

VBA-код макроса.

Теперь если нам нужно сбросить форматирование таблицы на исходный формат отображения ее данных, выделите диапазон ячеек A1:E20 и запустите макрос: «РАЗРАБОЧТИК»-«Код»-«Макросы»-«SbrosFormat»-«Выполнить». Результат работы макроса изображен ниже на рисунке:

сбросить форматирование таблицы на исходный формат.

Таблица приобрела формат, который определен макросом. Таким образом код VBA нам позволяет сбросить любые изменения формата ячеек на предустановленный автором отчета.



Описание VBA-макроса для формата ячеек таблицы Excel

Первая инструкция в коде, проверяет выделены ли ячейки диапазоном. Если перед выполнением макроса выделил другой элемент листа, например, график, тогда макрос закрывается и дальнейшие инструкции выполняться не будут. В противные случаи будут форматироваться все выделенные ячейки по очереди в соответствии с определенными настройками форматирования:

  1. Текст в значениях ячеек выравнивается по центру горизонтально и вертикально.
  2. Включен построчный перенос текста.
  3. Все границы ячеек получают черную обычной толщины непрерывную линию с черным цветом.
  4. Сброс цвета шрифта на авто.
  5. Удаляется любая заливка ячеек.
  6. Ширина столбцов автоматически настраивается под текст в ячейках.
  7. Автоматически настроить высоту строк по содержимому ячеек.

Модификация исходного кода макроса для форматирования

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

.HorizontalAlignment = xlHAlignRight.

Таким же образом можно выровнять текст по левую сторону изменив значение константы на xlHAlignLeft. Или можно выровнять положение текста по ширине ячейки используя константу xlHAlignJustify.

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

Если хотите выровнять текс к верху ячейки, тогда воспользуйтесь константой xlHAlignTop.

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

.Borders.LineStyle = xlDash

.Borders.Color = vbBlue

.Borders.Weight = xlMedium

Описание настройки форматирования для линий границ ячеек. Мы будем получать разные дополнительные типы линий границ если для свойства LineStyle присваивать такие константы:

  • xlDoshDot – применяется для рисования пунктирных линий в границах ячеек;
  • xlDouble – рисует двойную линию;
  • xlHairLine – рисует тонкую линию;
  • xlThick – для рисования очень толстой линии.

Для настройки цвета линий Excel предлагает всего 8 констант для определенных цветов. Константы для настройки цвета линий границ для свойства Color:

  • vbBlack – черный;
  • vbWhite – белый;
  • vbRed – красный;
  • vbGreen –зеленый;
  • vbBlue – синий;
  • vbYellow – желтый;
  • vbMagenta – алый;
  • vbCyan – голубой.

Но при необходимости присвоить линиям границ другие цвета можно вместо константы для свойства Color записать функцию RGB(). Достаточно лишь в аргументе этой функции указать код цвета по шкале от 0 и до 255.

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

.BorderAround xlContinuous, xlMedium, vbBlack

Описание: В первом аргументе для метода BorderAround можно записать также другой стиль линии. Во втором – толщину линии, а в третьем – цвет. Константы, которые можно присвоить в качестве значений для этих аргументов можно использовать те же, которые мы использовали для свойств: LineStyle, Weight, Color.

Если нужно экспонировать первую строку для выделенного диапазона с помощью жирного и курсивного шрифта значений ячеек. А также заполнить ячейки первой строки заливкой с голубым цветом, тогда в самом конце кода макроса перед последней инструкцией End Sub следует добавить несколько строк с VBA-кодом:

.Rows(1).Font.Bold = True

.Rows(1).Font.Italic = True

.Rows(1).Interior.Color = vbCyan

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

.Columns (1).Font.Bold = True

.Columns (1).Font.Italic = True

.Columns (1).Interior.Color = vbCyan

Если нужно задать особенный формат для экспонирования последней строки выделенного диапазона, тогда измените число 1 в аргументе свойства Rows на число всех выделенных строк .Rows.Count. Например, добавьте в конец кода еще такую строку:

.Rows(.Rows.Count).Font.Bold = True

Полная версия модифицированного кода макроса выглядит так:

Sub SbrosFormat()
If TypeName(Selection) <> "Range" Then Exit Sub
With Selection
.HorizontalAlignment = xlVAlignCenter
.VerticalAlignment = xlVAlignCenter
.WrapText = True
.Borders.LineStyle = xlDash
.Borders.Color = vbBlue
.Borders.Weight = xlMedium
.Font.ColorIndex = xlColorIndexAutomatic
.Interior.ColorIndex = xlColorIndexAutomatic
.Columns.AutoFit
.Rows.AutoFit
.BorderAround xlContinuous, xlMedium, vbBlack
.Rows(1).Font.Bold = True
.Rows(1).Font.Italic = True
.Rows(1).Interior.Color = vbCyan
.Columns(1).Font.Bold = True
.Columns(1).Font.Italic = True
.Columns(1).Interior.Color = vbCyan
.Rows(.Rows.Count).Font.Bold = True
End With
End Sub

Пример работы измененного кода VBA-макроса:

Пример после изменений в коде.

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

Пример макроса. Форматируем таблицу.

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

Итак, есть таблица

и мы хотим ее отформатировать так:

  • шапка и последняя (итоговая) строки — жирным шрифтом, текст шапки — по центру
  • граница всей таблицы — сплошной жирной линией
  • границы ячеек внутри — пунктирной линией

Запускаем на запись макрос

«Меню»

«Сервис»

«Макрос»

«Начать запись»

.

Дальше по шагам:

  1. Выделяем всю таблицу.
  2. Правой кнопкой вызываем контекстное меню и выбираем «Формат ячеек«.
  3. Выбираем вкладку «Граница«. Выбираем тип линии «сплошная жирная» и щелкаем кнопку «внешние«, затем тип линии «пунктир» и щелкаем кнопку «внутренние«.
  4. Щелкаем ОК. Границы должны появиться.
  5. Выделяем первую строку таблицы и щелкаем на панели инструментов  «форматирование» кнопки «по центру» и «полужирный«.
  6. Выделяем последнюю строку таблицы и щелкаем на панели инструментов  «форматирование» кнопку «полужирный«.

Останавливаем запись макроса и открываем его для редактирования

«Меню»

«Сервис»

«Макрос»

«Макросы»

кнопка

«Изменить»

Получаем такой код:

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

Глядя на макрос мы видим жесткую привязку к диапазонам. Надо от этого избавиться.

Удаляем строки со второй по четвертую, а именно
Range(«B4:F12»).Select
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone

Удаляем строку  
Range(«B4:F4»).Select   
и вместо следующей строки
With Selection
пишем
With Selection.Rows(1)  — так мы ссылаемся на первую строку выделенного диапазона

Вместо строки
Selection.Font.Bold = True
пишем
Selection.Rows(1).Font.Bold = True  — опять же ссылаемся на первую строку и делаем текст в ней жирным.

Удаляем строку
Range(«B12:F12»).Select  
и вместо следующей строки
Selection.Font.Bold = True
пишем
Selection.Rows(Selection.Rows.Count).Font.Bold = True — ссылаемся на последнюю строку и делаем текст в ней жирным.

Теперь можно проверить макрос.

Для этого выделяем нужную таблицу и запускаем макрос  

«Меню»

«Сервис»

«Макрос»

«Макросы»

кнопка

«Выполнить»

.

Похожие по тематике посты — еще почитать:

  1. Что делает макрос для выбора диапазона
  2. Код макроса для выбора диапазона
  3. Как работает макрос
  4. Что делает макрос для изменения форматирования диапазона
  5. Код макроса для изменения форматирования диапазона
  6. Как работает макрос
  7. Что делает макрос для изменения форматирования диапазона без выделения диапазона
  8. Код макроса для изменения форматирования диапазона без выделения диапазона
  9.  Что делает макрос для изменения форматирования диапазона через позиции ячеек
  10. Код макроса для изменения форматирования диапазона через позиции ячеек
  11. Как использовать
  12. Скачать файл

Ссылка на это место страницы:
#zadacha1

В этом макросе выбирается диапазон с помощью объекта Range

Ссылка на это место страницы:
#formula1

  1. Sub VibratDiapazon()
  2. Range("D5:D16").Select
  3. End Sub

Ссылка на это место страницы:
#kak1

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

Ссылка на это место страницы:
#zadacha2

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

Ссылка на это место страницы:
#formula2

  1. Sub IzmenitFormat()
  2. Range("D5:D16").Select
  3. Selection.NumberFormat = "#,##0"
  4. Selection.Font.Bold = True
  5. Selection.Interior.ColorIndex = 36
  6. End Sub

Ссылка на это место страницы:
#kak2

Вам не нужно запоминать все свойства объекта ячейки для того, чтобы манипулировать ими. Вы можете просто записать макрос, выполнив форматирование, а затем посмотреть на код, который написал Excel. После того, как вы увидели, что синтаксис правильный, вы можете применить его по мере необходимости. Многие программисты Excel начинают обучение VBA с этого. 

Мы используем метод Selection много раз в примере кода. Для того, чтобы написать более эффективный код, вы можете просто сослаться на диапазон, используя With … End With. Этот оператор говорит Excel, что любое действие, которое вы выполняете относится к объекту, который вы ранее указали.

Ссылка на это место страницы:
#zadacha3

Обратите внимание, что этот макрос фактически не выбирает диапазон, он ссылается на него, но при этом он не выделяется физически. Это ключевой момент. В макросе, мы можем работать с диапазоном, не выделяя его.

Ссылка на это место страницы:
#formula3

  1. Sub IzmenitFormatWith()
  2. With Range("D5:D16")
  3. .NumberFormat = "#,##0"
  4. .Font.Bold = True
  5. .Interior.ColorIndex = 36
  6. End With
  7. End Sub

Ссылка на это место страницы:
#zadacha4

Еще один способ, как можно выбрать диапазон с помощью элемента ячейки объекта Range

Адрес ячеек — это удобный способ выбора диапазонов через код. Он требует только позиции строк и столбцов в качестве параметров. Ячейка (5, 4) относится к строке 5, столбцу 4 (или ячейка D5). 

Ячейки (16, 4) относится к строке 16, столбцу 4 (или ячейки D16). Если вы хотите выбрать диапазон ячеек, просто укажите два пункта в объект Range

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

Ссылка на это место страницы:
#formula4

  1. Sub IzmenitFormatWith()
  2. With Range("D5:D16")
  3. .NumberFormat = "#,##0"
  4. .Font.Bold = True
  5. .Interior.ColorIndex = 36
  6. End With
  7. End Sub

Ссылка на это место страницы:
#touse

1. Активируйте редактор Visual Basic, нажав ALT + F11
2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта. 
3. Выберите InsertModule
4. Введите или вставьте код во вновь созданном модуле

Ссылка на это место страницы:
#file

Файлы статей доступны только зарегистрированным пользователям.

1. Введите свою почту

2. Нажмите Зарегистрироваться

3. Обновите страницу
Вместо этого блока появится ссылка для скачивания материалов.

Привет! Меня зовут Дмитрий. С 2014 года Microsoft Cretified Trainer. Вместе с командой управляем этим сайтом. Наша цель — помочь вам эффективнее работать в Excel. 

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

Подписывайтесь на нас в соц.сетях:

Как выбрать и изменить форматирование диапазона

На чтение 3 мин. Просмотров 2.8k.

Что делает макрос: Этот простой макрос выбирает диапазон D5: D16 и форматирует его.

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как этот код работает
  4. Код макроса
  5. Как этот код работает
  6. Код макроса
  7. Как использовать

Как макрос работает

В этом макросе определяется диапазон для выбора с помощью объекта Range.

Код макроса

Sub VibratDiapazon()
'Выбор диапазона
Range("D5:D16").Select
End Sub

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

Sub IzmenitFormat()
'Выбор диапазона
Range("D5:D16").Select
'Преобразование в формат числа
Selection.NumberFormat = "#,##0"
'Жирный шрифт
Selection.Font.Bold = True
'Заливка желтым цветом
Selection.Interior.ColorIndex = 36
End Sub

Вам не нужно запоминать все свойства объекта ячейки для того, чтобы манипулировать ими. Вы можете просто записать макрос, выполните форматирование, а затем посмотреть на код, который написал Excel. После того, как вы увидели, что синтаксис правильный, вы можете применить его по мере необходимости. Многие программисты Excel начинают обучение VBA с этого.

Вы заметили, что мы называем Selection много раз в предыдущем примере кода. Для того, чтобы написать более эффективный код, вы можете просто сослаться на диапазон, используя With … End With. Этот оператор говорит Excel, что любое действие, которое вы выполняете относится к объекту, который вы указали.

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

Sub IzmenitFormatWith()
With Range("D5:D16")
.NumberFormat = "#,##0"
.Font.Bold = True
.Interior.ColorIndex = 36
End With
End Sub

Как этот код работает

Еще один способ, вы можете выбрать диапазон с помощью элемента ячейки объекта Range.
Адрес ячеек — это удобный способ выбора диапазонов через код. Он требует только позиции строк и столбцов в качестве параметров. Ячейка (5, 4) относится к строке 5, столбцу 4 (или ячейка D5).
Ячейки (16, 4) относится к строке 16, столбцу 4 (или ячейки D16). Если вы хотите выбрать диапазон ячеек, просто укажите два пункта в объект Range. Этот макрос выполняет один и тот же выбор диапазона D5:D16:

Код макроса

Sub IzmenitFormatRange()
Range(Cells(5, 4), Cells(16, 4)).Select
End Sub

Как этот код работает

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

Код макроса

Sub IzmenitFormat3()
With Range(Cells(5, 4), Cells(16, 4))
.NumberFormat = "#,##0"
.Font.Bold = True
.Interior.ColorIndex = 36
End With
End Sub

Как использовать

Для реализации такого рода макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11 на клавиатуре.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код в окно кода.

0 / 0 / 0

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

Сообщений: 12

1

22.03.2011, 11:54. Показов 9647. Ответов 28


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

Здравствуйте, необходимо отформатировать таблицы ( написать макросы ) для нескольких примеров в архиве.
Задания не сложные, но т.к. мои познания в VBA не большие — это доставляет большие трудности.

вот примеры:

Заранее спасибо!

файл сюда прицепи



0



11482 / 3773 / 677

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

Сообщений: 11,145

22.03.2011, 16:41

2

Что мешает включить запись макросов?
Лень или просто нежелание?
Пусть форумчане думают!?



0



0 / 0 / 0

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

Сообщений: 12

23.03.2011, 09:30

 [ТС]

3

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

Что мешает включить запись макросов?
Лень или просто нежелание?
Пусть форумчане думают!?

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

алгоритм тут легкий, но записать его в VBA я не могу, из за незнания языка…

или подскажите как записать макрос на одном из примеров.

вот примеры:
ссылка 1
http://www.sendspace.com/file/ny898i

либо ссылка 2
[ATTACH]68590[/ATTACH]



0



11482 / 3773 / 677

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

Сообщений: 11,145

23.03.2011, 12:03

4

как записать макрос

Добавлено через 1 час 43 минуты

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

Миллион раз обсуждалось: нахождение последней заполненной ячейки



0



fox31

0 / 0 / 0

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

Сообщений: 12

24.03.2011, 16:36

 [ТС]

5

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Macro()
    Dim i As Integer
    i = 3
    Do Until i = 255
    i = i + 1
    If Range(" I , 1").Columns.Find("ВСЕГО") Then
    Cells.Next
    Range("A5 : D1").Interior.ColorIndex = 2
    
    End If
    Exit Do
    Loop
    End Sub

выдает ошибку при запуске макроса. в чем ошибка?

прохожусь по 1му столбцу до 255 если находит слово «ВСЕГО» выделяет цветом область следующей строки с A5 : D1



0



1508 / 478 / 56

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

Сообщений: 8,008

24.03.2011, 16:51

6

а почему 255?
А не лучше
Количество_строк = ActiveSheet.Rows.Count ‘в Microsoft Office Excel 2003 — 256
если Вы новичёк то зря пользуетесь Do Until …
Interior — ???
‘задаём цвет шрифта для … ячейки равным …
Worksheets(«Лист1»).Range(«a1»).Font.ColorIndex = 3 ‘красный

Добавлено через 6 минут
немного не в тему, чтобы не плодить тем
А как по уму узнать, что между столбцами Экселя N и X = 14



0



fox31

0 / 0 / 0

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

Сообщений: 12

24.03.2011, 17:01

 [ТС]

7

переделал немного код

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Macro()
    Dim i As Long
    i = 1
    Do Until Cells(i, 1).Value = ""
    i = i + 1
    If Cells(i, 1).Value = "ВСЕГО" Then
    Rows(A1, D1).Select
    Rows("A5 , D1").Interior.ColorIndex = 5
    
    End If
    Exit Do
    Loop
    End Sub

идет по 1му столбцу до пустой ячейки и красит ячейки в строках с A5 до D1
Ципихович Эндрю спасибо, попробую
запускается нормально, но окрашивания нет.



0



11482 / 3773 / 677

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

Сообщений: 11,145

24.03.2011, 17:01

8

Когда спрашиваешь где ошибка — говори какую строчку веделяет отладчик
Я так думаю, что здесь:
If Range(» I , 1″).



0



1508 / 478 / 56

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

Сообщений: 8,008

24.03.2011, 17:06

9

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

спасибо, попробую
запускается нормально, но окрашивания нет.

так внимательно какую поставили ячейку!!!!!!! на окрашивание



0



0 / 0 / 0

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

Сообщений: 12

24.03.2011, 17:19

 [ТС]

10

Цитата
Сообщение от Ципихович Эндрю
Посмотреть сообщение

так внимательно какую поставили ячейку!!!!!!! на окрашивание

это я сказал по своему переделанному коду, не вашему варианту
пс мне изменить нужно не цвет шрифта а цвет ячеек

Добавлено через 9 минут

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

Когда спрашиваешь где ошибка — говори какую строчку веделяет отладчик
Я так думаю, что здесь:
If Range(» I , 1″).

да, тогда в этом ошибка оказалась



0



1508 / 478 / 56

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

Сообщений: 8,008

24.03.2011, 17:23

11

цвет ячеек, легко

Range

(«A5»).Interior.ColorIndex = 5



0



0 / 0 / 0

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

Сообщений: 12

24.03.2011, 17:26

 [ТС]

12

Цитата
Сообщение от Ципихович Эндрю
Посмотреть сообщение

цвет ячеек, легко

Range

(«A5»).Interior.ColorIndex = 5

это вариант пробовал.
виднимо, что то не так в условии цикла, что не окрашивает



0



1508 / 478 / 56

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

Сообщений: 8,008

24.03.2011, 17:29

13

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

Range

раньше же у Вас было Rows



0



0 / 0 / 0

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

Сообщений: 12

24.03.2011, 17:30

 [ТС]

14

Цитата
Сообщение от Ципихович Эндрю
Посмотреть сообщение

раньше же у Вас было Rows

да, но пробовал писать и Range



0



1508 / 478 / 56

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

Сообщений: 8,008

24.03.2011, 17:31

15

короче полный последний код



0



Alex77755

11482 / 3773 / 677

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

Сообщений: 11,145

24.03.2011, 17:44

16

Это у тебя во втором примере?
Попробуй так

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Sub Macro()
Dim i As Long
Dim RNG As Range
Dim RK
Dim R1
Set RNG = Cells.Find(What:="ИТОГО", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False)
R1 = RNG.Row
RK = Columns(RNG.Column).Rows(65536).End(xlUp).Row
Range(Cells(R1, RNG.Column), Cells(RK, RNG.Column)).Interior.ColorIndex = 6
End Sub



1



mc-black

2784 / 716 / 106

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

Сообщений: 1,443

24.03.2011, 17:55

17

Я не читал топик, взял последний пример кода и подключил телепатические способности. Вот что из этого вышло (исправлено 3 бага):

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub Macro()
    Dim i As Long
    i = 1
    Do Until Cells(i, 1).Value = ""
        If Cells(i, 1).Value = "ВСЕГО" Then
            Range(Cells(i, 1), Cells(i, 4)).Interior.ColorIndex = 5
            Exit Do
        End If
        i = i + 1
    Loop
End Sub

А не работало, так как в теле цикла вне условий стояло Exit Do.



0



0 / 0 / 0

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

Сообщений: 12

24.03.2011, 17:56

 [ТС]

18

Это у тебя во втором примере?
Попробуй так

Да во 2м, спсибо, работает отлично. но код ваш для меня немного не понятен

скажите, пожалуйста как можно организовать цикл по вашему коду? (чтобы он все столбцы «итого» прорисовывал) все попытки сделать цикл у меня приводили к зависанию экселя и vba редактора



0



Busine2009

Заблокирован

29.03.2011, 10:12

19

fox31,
в поле для справки введите Find.
Найдите то ли Find Method, то ли Find Object. Там есть пример, как цикл сделать.



1



fox31

0 / 0 / 0

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

Сообщений: 12

29.03.2011, 11:27

 [ТС]

20

получается так:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub Macro()
Dim RNG As Range
Dim RK
Dim R1
With Range("a1:y500")
Set RNG = Cells.Find(What:="ВСЕГО", After:=ActiveCell, LookIn:=xlValues, LookAt:= _
        xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
        , SearchFormat:=False)
    If Not RNG Is Nothing Then
    firstAddress = RNG.Address
     Do
R1 = RNG.Row
RK = Columns(RNG.Column).Rows(65536).End(xlUp).Row
Range(Cells(R1, RNG.Column), Cells(RK, RNG.Column)).Interior.ColorIndex = 6
Loop While Not RNG Is Nothing And RNG.Address <> firstAddress
End If
End With
End Sub

но опять же действует для одного значения «ИТОГО»



0



Понравилась статья? Поделить с друзьями:
  • Макрос excel формат ячеек
  • Макрос excel формат по образцу
  • Макрос excel фильтр в сводной
  • Макрос excel ускорить работу макроса
  • Макрос excel удаление скрытых строк