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

Если Вы имеете в виду просто выделить необходимые столбцы в книге, то мне кажется это не очень удобно. Ведь таблица может потом измениться, скрытыми окажутся другое число столбцов.
IMHO Лучше не писать макрос основываясь на предположениях, что ячейки в первой строке обязательно должны быть заполнены, так как это не всегда так. А весь макрос от A до Я может выглядеть так :
или так :
- В любом случае Вам не придётся переживать по поводу увеличения/уменьшения количества столбцов в Вашей таблице.
- Автоподбор ширины столбца (AutoFit) использован только в качестве примера.
- Активный лист (ActiveSheet) также использован исключительно в качестве примера и Вы вправе использовать другой вариант.
Код: Выделить всё
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) также использован исключительно в качестве примера и Вы вправе использовать другой вариант.