Range("...").rows.AutoFit

Программирование на Visual Basic for Applications
den380
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 16
Зарегистрирован: 30.08.2006 (Ср) 11:03
Откуда: Kiev.UA

Range("...").rows.AutoFit

Сообщение den380 » 07.09.2006 (Чт) 10:27

Доброго времени суток всем.

описаная в сабже конструкция нормально отрабатывает в случае если рендж, на который ссылаюсь, не содержит "мергнутых" (объединенных) ячеек. В случае если рендж ссылается на несколько объединенных ячеек, то высота строки не коим образом не изменяется. Вопрос состоит в том глюк ли это экселЯ или я чего не так делаю?
Офис у меня 2003 Pro Eng.
Код выглядит таким вот образом:
Код: Выделить всё
Sub Macro2()
'
' Macro2 Macro
'
Worksheets("sheet1").Range("b10:c10").Rows.AutoFit
'
End Sub


Задача которую решаю - изменить высоту ячейки, состоящей из нескольких, так, что бы было видно все содержимое. Свойство WrapText для этой ячейки установлено в True.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.09.2006 (Чт) 10:31

Ну ты когда вручную кликаешь по такому диапазону, он расширяется?..
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

den380
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 16
Зарегистрирован: 30.08.2006 (Ср) 11:03
Откуда: Kiev.UA

Сообщение den380 » 07.09.2006 (Чт) 10:37

В том-то и вопрос что расширяется только если ячейки не мергнутые, в противном случае - нет...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.09.2006 (Чт) 10:48

Ну так и разве не вот?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

den380
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 16
Зарегистрирован: 30.08.2006 (Ср) 11:03
Откуда: Kiev.UA

Сообщение den380 » 07.09.2006 (Чт) 11:01

Так задачу то это не отменяет :(
Задача которую решаю - изменить высоту ячейки, состоящей из нескольких, так, что бы было видно все содержимое. Свойство WrapText для этой ячейки установлено в True.

Може кто какой "workaround" подскажет?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 07.09.2006 (Чт) 11:05

А как ты бы решил, какие из включённых строк расширять, а какие нет?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

den380
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 16
Зарегистрирован: 30.08.2006 (Ср) 11:03
Откуда: Kiev.UA

Сообщение den380 » 07.09.2006 (Чт) 11:22

GSerg писал(а):А как ты бы решил, какие из включённых строк расширять, а какие нет?

Мы наверное говоим о разных вещах. Посему прикрепляю пример.
В нем (примере) очень хотелось бы программно увеличить высоту строки 10 так, что бы билеберда введенная в ячейку (B-C:10) полностью в ней уместилась, при этом ширина столбцов В и С должна остаться неизменной.
Вложения
Autofit.xls
Пример, описанный в посте.
(18 Кб) Скачиваний: 64

den380
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 16
Зарегистрирован: 30.08.2006 (Ср) 11:03
Откуда: Kiev.UA

Сообщение den380 » 07.09.2006 (Чт) 14:33

Неужели ни кто с подобной задачей не сталкивался?
Откликнитесь - очень нада.

$€rg
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 11.01.2006 (Ср) 10:15
Откуда: Санкт-Петербург

Сообщение $€rg » 07.09.2006 (Чт) 16:29

процесс печатания программного кода укрепляет моральные устои С. Каммингс VBA4Dummies
:study:

den380
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 16
Зарегистрирован: 30.08.2006 (Ср) 11:03
Откуда: Kiev.UA

Сообщение den380 » 07.09.2006 (Чт) 17:17

$€rg писал(а):http://www.sql.ru/forum/actualthread.aspx?tid=155379

спасибо, гляну. О результатах сообщу.

den380
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 16
Зарегистрирован: 30.08.2006 (Ср) 11:03
Откуда: Kiev.UA

Solution

Сообщение den380 » 08.09.2006 (Пт) 10:54

И действительно решение, предложенное на sql.ru работает.
Взятый оттуда вариант кода для AutoFit мергнутых ячеек:
Код: Выделить всё
Private Sub RowHeight()
'
Dim CurrentRowHeight As Single, MergedCellRgWidth As Single
Dim CurrCell As Range
Dim ActiveCellWidth As Single, PossNewRowHeight As Single
'
If ActiveCell.MergeCells Then
    With ActiveCell.MergeArea
        If .WrapText = True Then
'            Application.ScreenUpdating = False
            CurrentRowHeight = .RowHeight
            ActiveCellWidth = ActiveCell.ColumnWidth
            For Each CurrCell In Selection
                MergedCellRgWidth = CurrCell.ColumnWidth + MergedCellRgWidth
            Next
            .MergeCells = False
            .Cells(1).ColumnWidth = MergedCellRgWidth
            .EntireRow.AutoFit
            PossNewRowHeight = .RowHeight
            .Cells(1).ColumnWidth = ActiveCellWidth
            .MergeCells = True
            .RowHeight = IIf(CurrentRowHeight > PossNewRowHeight, CurrentRowHeight, PossNewRowHeight)
        End If
    End With
End If
'
End Sub

Единственное лично для меня остается непонятным почему не работает стандартный AutoFit. Как говорится осадок-то остался.

PS Всем спасибо.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 58

    TopList