Как написать макрос в Excel'e по изменению ширины столбцов

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
WP
Сообщения: 11
Зарегистрирован: 20 май 2005, 15:57

Всем привет. И сразу к делу. Как лучше написать макрос для того, чтобы привести в нормальный вид таблицу. В ней много столбцов, одни из них скрытые, нужно изменить ширину только нескрытых столбцов. Есть идея использовать первую строку, пока в ее ячейках есть какое-то значение (указание на непустые ячейки) и если ширина столбца при этом >0 (указание на нескрытые ячейки), то пусть ширина столбца будет равна, например, 8. Не знаю как написать начало, как обратиться к этим ячейкам. сначала обращаюсь к первой строке через Range, затем пишу while и следом if, но чего-то не хватает. Может For. И вообще есть подозрение, что я не так обращаюсь к этим ячейкам. Направьте на путь истинный, как лучше начать этот макрос. Всем заранее спасибо.
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

проще всего начать запись макроса из меню, выполнить необходимые действия и остановить запись
Изображение
WP
Сообщения: 11
Зарегистрирован: 20 май 2005, 15:57

Если Вы имеете в виду просто выделить необходимые столбцы в книге, то мне кажется это не очень удобно. Ведь таблица может потом измениться, скрытыми окажутся другое число столбцов.
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

IMHO Лучше не писать макрос основываясь на предположениях, что ячейки в первой строке обязательно должны быть заполнены, так как это не всегда так. А весь макрос от A до Я может выглядеть так :

Код: Выделить всё

For Each iCell In ActiveSheet.UsedRange.Rows(1).SpecialCells(xlVisible)
    iCell.EntireColumn.AutoFit
Next
или так :

Код: Выделить всё

For Each iCell In ActiveSheet.UsedRange.Rows(1).Cells
    If Not iCell.EntireColumn.Hidden Then
       iCell.EntireColumn.AutoFit
    End If
Next
- В любом случае Вам не придётся переживать по поводу увеличения/уменьшения количества столбцов в Вашей таблице.
- Автоподбор ширины столбца (AutoFit) использован только в качестве примера.
- Активный лист (ActiveSheet) также использован исключительно в качестве примера и Вы вправе использовать другой вариант.
Ответить