Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.02.2009, 09:18   #1
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию Автоподбор высоты

ALL: Есть таблицы, полностью состоящие из объединенных строк, так как без этого невозможно воссоздать структуру таблиц. Объединения происходит по столбцам, но текст далеко не всегда помещается в одну строчку. Стандартный автоподбор высоты не работает для объединенных ячеек. :(( Пока обходиться дополнительным вертикальным объединением по строчкам, но как понимаете решение не фонтан. Так что вопрос: нужен макрос или иное средство для автоподбора высоты объединенных ячеек.
Как быть? Что делать? (Кто виноват? :))) Где и куда рыть?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 11.02.2009, 10:14   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Где и куда рыть?
Ройте в этом направлении:
Код:
Sub AutoFitMergeAreaSize(ByRef cell As Range)
    Dim ra As Range: Set ra = cell.MergeArea
    cell.UnMerge
    cell.EntireRow.AutoFit
    ra.Merge
End Sub

Sub ПримерИспользования_АвтоподборВысотыОбъединённойЯчейки()
    AutoFitMergeAreaSize ActiveCell
    AutoFitMergeAreaSize [d3]
End Sub
EducatedFool вне форума Ответить с цитированием
Старый 11.02.2009, 20:44   #3
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Ройте в этом направлении:
Спасибо! Побежал за лопатой!
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 11.02.2009, 23:14   #4
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Ройте в этом направлении:
Код:
[1] Sub AutoFitMergeAreaSize(ByRef cell As Range)
[2]     Dim ra As Range: Set ra = cell.MergeArea
[3]     cell.UnMerge
[4]     cell.EntireRow.AutoFit
[5]     ra.Merge
[6] End Sub

Sub ПримерИспользования_АвтоподборВысотыОбъединённойЯчейки()
    AutoFitMergeAreaSize ActiveCell
    AutoFitMergeAreaSize [d3]
End Sub
Попробую разобрать процедуру:
1. на входе: переменная cell тип "ячейка"
2. объявляем переменную ra тип "ячейка": заносим в нее объединенные диапазон переменной cell
3. разбиваем объединение переменной cell. При этом содержимое оказывается в первой ячейке.
4. Делаем автоподбор высоты для первой ячейки.
5. Восстанавливаем объедение.

Скажем если изначально в объединенной ячейки было 10 столбцов, а информации было на две строки при таком объединение, то при запуске программы получаем что высота строки раз в десять превосходит нужную, т.к. это высота необходимая для размещения всей информации в первом из десяти столбцов....

Попробую еще подумать...
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 16.11.2010, 13:40   #5
vetal74
 
Регистрация: 28.10.2009
Сообщений: 8
По умолчанию

Напишите куда вставлять этот макрос? Я в этом полный .. . . .. . .
vetal74 вне форума Ответить с цитированием
Старый 16.11.2010, 13:48   #6
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
Напишите куда вставлять этот макрос?
В модуль кода рабочей книги.
ALT+F11
Входите в редактор, затем - вставить модуль и вот туда вставляете код макроса.
Хотя можно и модуль рабочего листа.
п.к.м на ярлыке листа - Исходный код - и вставляете код в открывшемся окне.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499

Последний раз редактировалось VictorM; 16.11.2010 в 13:50.
VictorM вне форума Ответить с цитированием
Старый 16.11.2010, 16:02   #7
vetal74
 
Регистрация: 28.10.2009
Сообщений: 8
По умолчанию

можно вставить макрос только в одну ячейку (не объеденную) на одном рабочем листе? И где найти исходный код там все по английски написано, а я всю жизнь учил немецкий. Какую книжку мне полистать, чтобы я немного имел представление о VBA

Последний раз редактировалось vetal74; 16.11.2010 в 16:05.
vetal74 вне форума Ответить с цитированием
Старый 16.11.2010, 18:01   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
И где найти исходный код там все по английски написано, а я всю жизнь учил немецкий
Что поделаешь... немецкого языка в VBA нет, придётся разбираться с английским.
(русский, к сожалению, есть - но такой русский VBA есть только в программе 1С)

Цитата:
Какую книжку мне полистать, чтобы я немного имел представление о VBA
Выбирайте любую.
http://excelvba.ru/books.html
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение высоты фрецма от контента cwit JavaScript, Ajax 6 19.11.2008 07:25