Страницы: 1
RSS
Автоподбор высоты объединенной строки, Vba
 
Добрый вечер. Есть лист с ячейкой а2 она объединенная. Как сделать чтобы высота строки автоматически подгонялась в зависимости от кол-ва текста?  
 
Только макросами: Подбор высоты строки/ширины столбца объединенной ячейки
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Димитрий, прочитал вашу статью. В ней говорится что нужно самому выделить диапазон ячейки и после обратится к функции, а как сделать что бы функция сразу обращалась на лист2, к ячейке а2?
 
Вы не умеете обращаться к ячейкам из VBA? Или вопрос в другом? И в статье выделенный диапазон лишь как пример - сама функция принимает в качестве аргумента любую ячейку. Например:
Код
Call RowColHeightForContent(Sheets("Лист2").Range("A2"), True)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Обращаться к ячейке умею. Просто в вашем коде искал строчку которая обращается к диапазону. Теперь все ясно. Как всегда выручаете! Спасибо
 
The_Prist, Добрый день, Вы не подскажете, что надо изменить в вашем коде, чтобы корректировалась с уменьшением высота строки бОльшая, чем нужно?
 
cuprum, вообще не понял, что хотите. Покажите на примере как получается и как хотелось бы.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
В Вашем же примере, все строки увеличивают высоту, если высоты строки недостаточно для отображения всего текста в объединенной ячейке. Если же высота строки ( в файле примере - 18, 20, 21) заведомо больше чем нужно, то высота не подгоняется, она остается все так же больше чем нужно.
 
Доброе время суток.
Попробуйте такой вариант.
Скрытый текст
 
Андрей VG,  вроде отрабатывает как надо, в обе стороны, как на увеличение высоты, так и на уменьшение. Спасибо.
 
Андрей VG, если несколько столбцов выделять то не работает
 
Цитата
Тимофеев написал:
если несколько столбцов выделять то не работает
Подтверждаю, не работает.
 
Цитата
cuprum написал:
Если же высота строки заведомо больше чем нужно,
можно просто в этом блоке:
Код
If OldR_Height < (NewR_Height / ih) Then
    .RowHeight = NewR_Height / ih
Else
    .RowHeight = OldR_Height
End If

оставить только одну строку:
Код
.RowHeight = NewR_Height / ih

т.е. убрать условие на проверку высоты строки ДО, подбирая таким образом подо все строки без исключения. Не очень правильный подход, на мой взгляд, особенно если собрались для нескольких столбцов сразу применять. Если объединенные ячейки будут в разных столбцах, то высота будет подобрана на основании объединенных ячеек в последних столбцах.
Правильнее всего делать иначе: если это возможно, то перед выполнением цикла по ячейкам добавить строку установки стандартной высоты:
Код
Sub ChangeRowColHeight()
    Dim rc As Range
    Dim bRow As Boolean
    bRow = (MsgBox("Изменять высоту строк?", vbQuestion + vbYesNo, "www.excel-vba.ru") = vbYes)
    'bRow = True:  для изменения высоты строк
    'bRow = False: для изменения ширины столбцов
    Application.ScreenUpdating = False
    Selection.EntireRow.RowHeight = 12.75
    For Each rc In Selection
        RowColHeightForContent rc, bRow
    Next
    Application.ScreenUpdating = True
End Sub

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