powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Автоподбор высоты строк в Excel
5 сообщений из 5, страница 1 из 1
Автоподбор высоты строк в Excel
    #32828305
MikeFlat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем!
Никто не знает, как сделать автоподбор высоты строк в Excel, если составляющие эту строку ячейки являются сгруппированными? Обычный метод AutoFit не работает!
Подскажите плз, кто сталкивался!
...
Рейтинг: 0 / 0
Автоподбор высоты строк в Excel
    #32831050
Lenivec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хорошая задачка, потратил на неё в свое время не один день
...
Рейтинг: 0 / 0
Автоподбор высоты строк в Excel
    #32831068
Lenivec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я делал так:
создавал временный лист, копировал в него данные из объединенной ячейки, устанавливал ширину ячейки на временном листе равной ширине объединенных ячеек, делал 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
Автоподбор высоты строк в Excel
    #32831114
Lenivec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел усовершенствованный вариант без цикла

Код: 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
Автоподбор высоты строк в Excel
    #32831117
Lenivec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
второй вариант только если объединенный ячейки одинакового размера соответственно ...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Автоподбор высоты строк в Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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