AutoFit в Excel

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
jornand
Постоянный обитатель
Сообщения: 150
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Иркутск
Контактная информация:

AutoFit в Excel

Сообщение jornand »

Может кто сталкивался...

Как сделать xlAutoFit на ячейку, растянутую на на несколько колонок (Merged)? Помогло бы xlGetColumnWidth, но такой функции нет.
Или хотя бы xlSetActiveCell, чтоб не создавать кучу bas-модулей.
Tangar
Посетитель
Сообщения: 40
Зарегистрирован: 26 сен 2005, 18:29
Откуда: Р. Беларусь ИП "ТОП СОФТ"

Сообщение Tangar »

Нужна функция для использования в випе, или же родная Excel'евская?!
Если из Випа :
xlAutoFit
Function xlAutoFit(RawU : longint; ColL : longint; RawD : longint; ColR : longint) : boolean;
Для ячеек из заданного диапазона (стандартное форматирование Auto Fit)
Возвращает результат операции.
RawU : longint; ColL : longint; RawD : longint; ColR : longint
координаты диапазона
Maverick
Абориген
Сообщения: 943
Зарегистрирован: 29 мар 2005, 17:49
Откуда: External Developer
Контактная информация:

Сообщение Maverick »

Tangar писал(а):Нужна функция для использования в випе, или же родная Excel'евская?!
Если из Випа :
xlAutoFit
Function xlAutoFit(RawU : longint; ColL : longint; RawD : longint; ColR : longint) : boolean;
Для ячеек из заданного диапазона (стандартное форматирование Auto Fit)
Возвращает результат операции.
RawU : longint; ColL : longint; RawD : longint; ColR : longint
координаты диапазона
Может быть уважаемый Тангар поделится свежей докой по Экселевским ф-ям? А мы обязуемся обновить ее в ОПЫТе
Изображение
Знающий людей разумен.
Знающий себя просветлён.
Побеждающий людей силен.
Побеждающий самого себя могущественнен
Tangar
Посетитель
Сообщения: 40
Зарегистрирован: 26 сен 2005, 18:29
Откуда: Р. Беларусь ИП "ТОП СОФТ"

Сообщение Tangar »

Я бы с радостью поделился, но у меня такая же, ка приведена в разделе "ОПЫТ".
Холявят разработчики библиотеки, не обноваляют доку 8-)
jornand
Постоянный обитатель
Сообщения: 150
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Иркутск
Контактная информация:

Сообщение jornand »

А кто-нибудь пробовал сделать xlAutoFit(1,1,1,3), когда диапазон A1:C1 объединен в одну ячейку? Какие соображения?
Tangar
Посетитель
Сообщения: 40
Зарегистрирован: 26 сен 2005, 18:29
Откуда: Р. Беларусь ИП "ТОП СОФТ"

Сообщение Tangar »

А по-моему это не сработает на объединенных ячейках ...
:-(
Легко проверить, написал маленький макрос на родном для Excel'я VB.
На объединенных ячейках точно не работает автораздвиэка ячейки по ширине и еще каки-то фишки ...
Вобщем много с ними проблем у самого Excel'я
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: AutoFit в Excel

Сообщение Алексей »

xlAutoFit раздвигает ячейку по ширие, а есть какая-нибудь функция, которая раздвигала бы ячейку по высоте, не меняя ширины?
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: AutoFit в Excel

Сообщение Masygreen »

Алексей писал(а):xlAutoFit раздвигает ячейку по ширие, а есть какая-нибудь функция, которая раздвигала бы ячейку по высоте, не меняя ширины?
считайте символы, делите на сколько там влазит в строчку по ширине и примерно выставляйте ширину функцией )
Время ведет!
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: AutoFit в Excel

Сообщение Алексей »

Я через матрицу в эксель пишу... ) есть способ нормальный? :)
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5184
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: AutoFit в Excel

Сообщение edward_K »

Если у вас высота ячеек авто(не таскали мышкой или не ставили высоту руками) и текст не
объединеных ячейках, то xlWrapText прекрасно работает. Я обычно делаю шаблон, в котором сначала выставляю форматы по столбцам, потом по строкам шапки. После вывода матрицы в файл - xlWrapText, это приводит к автоподбору высоты. Если же есть объединение ячеек, то и автоподбор высоты в Excel не будет работать и приходится выставлять высоту руками. У вас еще есть возможность выполнять/импортировать свои макросы, но если в Excel не найдете инструмента, то вам ничего не поможет.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: AutoFit в Excel

Сообщение Алексей »

Да, уже загуглил, что при объединении ячеек не получится, а шаблон мне дали как раз такой что в шапке куча таких ячеек.
Будут настаивать, заставлю переделать шаблон и избавиться от объединенных.
Спасибо.
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: AutoFit в Excel

Сообщение Den »

Смотря ,кнч. что на листе там "наверчено".
Но, если просто открыть новую книгу, и вбить там какой то текст разной длины, скажем на первых пяти строках, путь с колонки B
а зачем объединить ячейки с В по F по каждой из этих строчек, и выставить :
- по горизонтали левый отступ
- по вертикали по нижнему краю
- переносить по словам

то запустив макроса :

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

Sub Test123()
Dim fromRow, toRow As Long

fromRow = 1
toRow = 5
ActiveSheet.Cells(1, 1).Select
ReDim columnWidths(2 To 6) As Long
colWidth = 0
For colNo = LBound(columnWidths) To UBound(columnWidths):
    columnWidths(colNo) = ActiveSheet.Columns(colNo).ColumnWidth:
    colWidth = colWidth + columnWidths(colNo)
Next
colNo = LBound(columnWidths)
Columns(colNo).ColumnWidth = colWidth
For rowNo = fromRow To toRow
  Set cell = Cells(rowNo, colNo)
  If cell.MergeCells And cell.Address = cell.MergeArea.Cells(1).Address Then
        Set ma = cell.MergeArea
        With ma
            .UnMerge:
           .EntireRow.AutoFit
            .Merge
       End With
    End If
Next
 Columns(LBound(columnWidths)).ColumnWidth = columnWidths(LBound(columnWidths))
End Sub

получаем что нужно
Ответить