Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Автоподбор высоты строк в Excel / 5 сообщений из 5, страница 1 из 1
15.12.2004, 13:01:01
    #32828305
MikeFlat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоподбор высоты строк в Excel
Привет всем!
Никто не знает, как сделать автоподбор высоты строк в Excel, если составляющие эту строку ячейки являются сгруппированными? Обычный метод AutoFit не работает!
Подскажите плз, кто сталкивался!
...
Рейтинг: 0 / 0
16.12.2004, 17:53:48
    #32831050
Lenivec
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоподбор высоты строк в Excel
хорошая задачка, потратил на неё в свое время не один день
...
Рейтинг: 0 / 0
16.12.2004, 18:06:10
    #32831068
Lenivec
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоподбор высоты строк в Excel
я делал так:
создавал временный лист, копировал в него данные из объединенной ячейки, устанавливал ширину ячейки на временном листе равной ширине объединенных ячеек, делал AutoFit, затем считывал полученную высоту и устанавливал её для моей объединенной ячейки

собственно все тривиально, если бы не одно НО ...
КАК ПОСЧИТАТЬ ШИРИНУ ОБЪЕДИНЕННОЙ ЯЧЕЙКИ ?!
если просто сложить ширины всех ячеек из которых состоит объединенная то не получим искомую величину, так как некий размер имеют и разделители

в общем проведя исследование работы екселя пришол к выводу что каждая ячейка является окном, но окном динамически создаваемым екселем только в тот момент когда ячейка становится активной, поэтому зацепится за какие либо значения данного окна я не смог

в общем в конечном итоге я не смог придумать ничего лучше как собрать некоторую статистику и на основе нее вывести некую величину 0.714444444444444

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Public Function CountInnerRangeWidth(rRange As Excel.Range) As Double
'Определение суммарной ширины поля
Const Delim As Double =  0 . 714444444444444 
On Error GoTo Err_
Dim dRWidth As Double
Dim k As Long

    For k =  1  To rRange.Areas( 1 ).Cells.Count
       dRWidth = dRWidth + rRange.Areas( 1 ).Cells(k).ColumnWidth
    Next k
    CountInnerRangeWidth = dRWidth + _
        IIf(dRWidth -  1  >  0 , dRWidth -  1 ,  0 ) * Delim

Exit_:
    Exit Function
Err_:
    MsgBox Err.Description, vbCritical + vbOKOnly, cstr_ErrPrefix & "CountInnerRangeWidth"
    Resume Exit_
End Function

в общем где то так, будут вопросы обращайся
...
Рейтинг: 0 / 0
16.12.2004, 18:25:25
    #32831114
Lenivec
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоподбор высоты строк в Excel
Нашел усовершенствованный вариант без цикла

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Public Function CountInnerRangeWidth(rRange As Range) As Double
Const Delim =  0 . 714444444444444 
On Error GoTo Err_
Dim dRWidth As Double
Dim lRCount As Long

    dRWidth = rRange.ColumnWidth
    lRCount = rRange.Count
    CountInnerRangeWidth = dRWidth * lRCount + _
        IIf(dRWidth * lRCount -  1  >  0 , dRWidth * lRCount -  1 ,  0 ) * Delim

Exit_:
    Exit Function
Err_:
    MsgBox Err.Description
    Resume Exit_
End Function
...
Рейтинг: 0 / 0
16.12.2004, 18:28:17
    #32831117
Lenivec
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автоподбор высоты строк в Excel
второй вариант только если объединенный ячейки одинакового размера соответственно ...
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Автоподбор высоты строк в Excel / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]