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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2014, 12:00   #1
oleg4224
Пользователь
 
Регистрация: 07.04.2014
Сообщений: 12
По умолчанию Как изменить высоту строки по условию

Добрый день всем !
Выделил свой вопрос в отдельную тему тк непонятно как сделать - автоподбор высоты строки не помогает

Есть таблица - в ней есть ячейки в которых много текста (в моем примере в столбце D) , область таблицы A3:O5000, обьединенных ячеек нет

Автоподбор высоты строк срабатывает по максимальному тексту - при этом высота строки становится безумной тк много текста в одной из ячеек

Примерный алгоритм решения
1.Для строки 3
- выбираем диапазоны A3:C3 и E3:O3 (D3 исключаем тк в ней много текста)
- высоту строки 3 выставляем по самому максимальному заполнению одной из ячеек диапазона A3:C3 и E3:O3

2.Для строки 4
- выбираем диапазоны A4:C4 и E4:O4 (D4 исключаем тк в ней много текста)
- высоту строки 4 выставляем по самому максимальному заполнению одной из ячеек диапазона A4:C4 и E4:O4

и так далее до 5000 строки

Как это реализовать макросом ? Пример во вложении
Вложения
Тип файла: zip ИЗМЕНЕНИЕ ВЫСОТЫ СТРОКИ.zip (13.5 Кб, 10 просмотров)
oleg4224 вне форума Ответить с цитированием
Старый 15.04.2014, 13:11   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

может так:
Код:
Sub FitAsNeed()
  [d:d].WrapText = False:  Cells.EntireRow.AutoFit
End Sub
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 15.04.2014 в 13:25.
IgorGO вне форума Ответить с цитированием
Старый 15.04.2014, 13:22   #3
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

С сохранением переноса по словам
Код:
Sub oleg4224()
Dim r As Range, f(), i&
Application.ScreenUpdating = False
With ActiveSheet.UsedRange
  f = .Columns(4).Formula
  .Columns(4).ClearContents
  Rows.AutoFit
  ReDim rh(1 To .Rows.Count)
  For i = 1 To UBound(rh)
    rh(i) = .Rows(i).RowHeight
  Next
  .Columns(4).Formula = f
  For i = 1 To UBound(rh)
    .Rows(i).RowHeight = rh(i)
  Next
End With
Application.ScreenUpdating = True
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 15.04.2014, 13:27   #4
oleg4224
Пользователь
 
Регистрация: 07.04.2014
Сообщений: 12
По умолчанию

Попробовал так сделать - пример был с кнопкой + совет Игоря

поправьте если что не так

еще щас попробую с сохранением переноса по словам уважаемого Казанский
Вложения
Тип файла: zip Скрытие столбца и высота стр.zip (13.4 Кб, 5 просмотров)

Последний раз редактировалось oleg4224; 15.04.2014 в 13:30.
oleg4224 вне форума Ответить с цитированием
Старый 15.04.2014, 13:45   #5
oleg4224
Пользователь
 
Регистрация: 07.04.2014
Сообщений: 12
По умолчанию

спасибо Казанскому и Игорю за помощь!!

а как сделать так чтоб выравнивание строк не с 1 строки начиналось а с 3-й - что поменять в вашем макросе ?
Цитата:

Sub oleg4224()
Dim r As Range, f(), i&
Application.ScreenUpdating = False
With ActiveSheet.UsedRange
f = .Columns(4).Formula
.Columns(4).ClearContents
Rows.AutoFit
ReDim rh(1 To .Rows.Count)
For i = 1 To UBound(rh)
rh(i) = .Rows(i).RowHeight
Next
.Columns(4).Formula = f
For i = 1 To UBound(rh)
.Rows(i).RowHeight = rh(i)
Next
End With
Application.ScreenUpdating = True
End Sub
Вложения
Тип файла: zip Скрытие столбца и высота стр2.zip (16.8 Кб, 10 просмотров)

Последний раз редактировалось oleg4224; 15.04.2014 в 13:47.
oleg4224 вне форума Ответить с цитированием
Старый 15.04.2014, 13:57   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

вот это
For i = 1 ...
не наводит на мысдь, что поменять (в макросе встречается 2 раза))
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 15.04.2014, 14:00   #7
oleg4224
Пользователь
 
Регистрация: 07.04.2014
Сообщений: 12
По умолчанию

сижу 2 день - отупел уже - сэнкс спасибо за совет я про другую строку думал ReDim rh(1 To .Rows.Count) хотя простая замена For i = 1 на For i = 3 не помогает ... поэтому и спрашиваю

Последний раз редактировалось oleg4224; 15.04.2014 в 14:05.
oleg4224 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как увеличить высоту строки в CheckListBoxe Dennis777 Общие вопросы Delphi 1 13.03.2013 15:12
Как сделать блок на всю высоту окна минус высоту шапки и футера Qaliti HTML и CSS 3 19.07.2012 13:20
Изменить высоту строки DbGridEH Aleksandr БД в Delphi 1 28.04.2011 21:09
Как изменить высоту PopUpMenu Item Comer_Jus Общие вопросы Delphi 1 16.05.2008 14:26