Всем доброго вечера. Вот, споткнулась на ровном месте, прошу помощи. Экспортирую записи из запроса Access в таблицу Excel, создается новый файл, шаблон не используется. Как задать в процедуре автоподбор ширины столбцов по содержимому? Наверняка есть метод, обеспечивающий эту операцию. Подскажите, пожалуйста
Всем доброго вечера. Вот, споткнулась на ровном месте, прошу помощи. Экспортирую записи из запроса Access в таблицу Excel, создается новый файл, шаблон не используется. Как задать в процедуре автоподбор ширины столбцов по содержимому? Наверняка есть метод, обеспечивающий эту операцию. Подскажите, пожалуйстаPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
EntireColumn - это всегда полная колонка всего листа. Columns(i) - это i-я колонка в пределах конкретного диапазона (не обязательно всего листа), для которого это свойство вызвано. Например, Range("B2:K4").Columns(1) - это диапазон B2:B4. А Range("B2:K4").Columns(1).EntireColumn - это диапазон B:B. А Range("B2:K4").EntireColumn - это диапазон B:K, т.е. полные колонки от B до K.
EntireColumn - это всегда полная колонка всего листа. Columns(i) - это i-я колонка в пределах конкретного диапазона (не обязательно всего листа), для которого это свойство вызвано. Например, Range("B2:K4").Columns(1) - это диапазон B2:B4. А Range("B2:K4").Columns(1).EntireColumn - это диапазон B:B. А Range("B2:K4").EntireColumn - это диапазон B:K, т.е. полные колонки от B до K.Gustav
Gustav, спасибо. То есть в контексте ширины столбца, в общем-то не важно, пишу я Range("B2:K4").Columns.AutoFit или Range("B2:K4").EntireColumn.AutoFit ? А вот мой вариант Sheets(1).Columns.AutoFit, наверное, не совсем удачный, так как идет обращение ко всем столбцам листа, а не только к заполненным. В этом плане использование Range("A1").CurrentRegion более оптимально. Я правильно понимаю?
ЗЫ: извиняюсь за глупые вопросы, но с объектами Excel практически не знакома, а тупо копировать/вставить не привыкла
Gustav, спасибо. То есть в контексте ширины столбца, в общем-то не важно, пишу я Range("B2:K4").Columns.AutoFit или Range("B2:K4").EntireColumn.AutoFit ? А вот мой вариант Sheets(1).Columns.AutoFit, наверное, не совсем удачный, так как идет обращение ко всем столбцам листа, а не только к заполненным. В этом плане использование Range("A1").CurrentRegion более оптимально. Я правильно понимаю?
ЗЫ: извиняюсь за глупые вопросы, но с объектами Excel практически не знакома, а тупо копировать/вставить не привыклаPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Правильно. Но к использованию CurrentRegion тоже следует подходить аккуратно. Он ограничивается первой пустой строкой(столбцом). Для столбцов с 1 по 6 можно записать так [vba]
Code
Sheets(1).Columns(1:6).AutoFit
[/vba]
Правильно. Но к использованию CurrentRegion тоже следует подходить аккуратно. Он ограничивается первой пустой строкой(столбцом). Для столбцов с 1 по 6 можно записать так [vba]
Пожалуйста, опасаетесь CurrentRegion - есть UsedRange, а "объявление перепишем": [vba]
Code
Sheets(1).UsedRange.EntireColumn.AutoFit
[/vba]
Quote (RAN)
Для столбцов с 1 по 6 можно записать так [vba]
Code
Sheets(1).Columns(1:6).AutoFit
[/vba]
Нельзя. На несколько колонок/строк можно ссылаться либо Sheets(1).Columns("A:F"), либо Sheets(1).Rows("1:6"). Без кавычек числовым индексом можно ссылаться только на единичную колонку или строку: Columns(1), Rows(5). Ну и как частный случай кавычек можно также Columns("A") и Rows("5").
Quote (RAN)
Но к использованию CurrentRegion тоже следует подходить аккуратно. Он ограничивается первой пустой строкой(столбцом).
Пожалуйста, опасаетесь CurrentRegion - есть UsedRange, а "объявление перепишем": [vba]
Code
Sheets(1).UsedRange.EntireColumn.AutoFit
[/vba]
Quote (RAN)
Для столбцов с 1 по 6 можно записать так [vba]
Code
Sheets(1).Columns(1:6).AutoFit
[/vba]
Нельзя. На несколько колонок/строк можно ссылаться либо Sheets(1).Columns("A:F"), либо Sheets(1).Rows("1:6"). Без кавычек числовым индексом можно ссылаться только на единичную колонку или строку: Columns(1), Rows(5). Ну и как частный случай кавычек можно также Columns("A") и Rows("5").Gustav
То есть в контексте ширины столбца, в общем-то не важно, пишу я Range("B2:K4").Columns.AutoFit или Range("B2:K4").EntireColumn.AutoFit ?
Pelena, на практике, как правило, не важно, но отличие есть и знать его нужно. А нюанс в следующем. Допустим в ячейках B2:B4 - строки по 3 символа, а в ячейке B5 (т.е. уже за пределами нашего диапазона) - строка 30 символов. Тогда Range("B2:K4").Columns.AutoFit сделает ширину всей колонки B равной 3 символам, в то время как Range("B2:K4").EntireColumn.AutoFit расширит колонку B до 30 символов.
Quote (Pelena)
То есть в контексте ширины столбца, в общем-то не важно, пишу я Range("B2:K4").Columns.AutoFit или Range("B2:K4").EntireColumn.AutoFit ?
Pelena, на практике, как правило, не важно, но отличие есть и знать его нужно. А нюанс в следующем. Допустим в ячейках B2:B4 - строки по 3 символа, а в ячейке B5 (т.е. уже за пределами нашего диапазона) - строка 30 символов. Тогда Range("B2:K4").Columns.AutoFit сделает ширину всей колонки B равной 3 символам, в то время как Range("B2:K4").EntireColumn.AutoFit расширит колонку B до 30 символов.Gustav
Да ладно! Признаюсь, я сам когда-то, когда эту премудрость постигал, то далеко не сразу допёр, что вместо Columns(1:6) или Columns("1:6"), которые не катили, надо буквы попробовать...
Quote (RAN)
Погорячился!
Да ладно! Признаюсь, я сам когда-то, когда эту премудрость постигал, то далеко не сразу допёр, что вместо Columns(1:6) или Columns("1:6"), которые не катили, надо буквы попробовать...Gustav
Gustav, RAN, я получила исчерпывающий ответ на свой вопрос, узнала много нового и полезного. Макрорекодер мне точно не смог бы так помочь Спасибо
Gustav, RAN, я получила исчерпывающий ответ на свой вопрос, узнала много нового и полезного. Макрорекодер мне точно не смог бы так помочь СпасибоPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816