|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
Заполняю скриптом страницу Excel. При занесении в ячейку длинного текста автоматически изменяется высота ячейки, как в общем то и надо. А если мы объединяем несколько ячеек в строке и заносим туда данные - высота строки не изменяется. Можно ли с этим как - то побороться? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2005, 16:13 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2005, 17:49 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
big-duke убери shrinktofit Увы не помогает К сожалению найти прямое решение проблемы не удалось. Зато нашелся обходной путь: задаю фиктивному столбцу в той же строке ширину равную сумме объединенных ячеек, форматирую аналогично, заношу тот же текст и скрываю этот столбец. Excel для этой ячейки выполняет автоматическое задание высоты так как эта ячейка не является объединенной и пользователь не видит фиктивный столбец в отчете. В общем хоть решение и нашлось, но осадок остался - что мешало изначально сделать автоподбор высоты для ячеек объединенных в пределах одной строки? Если кто знает более простое решение - пишите Всем спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2005, 17:58 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
Михаил К. big-duke убери shrinktofit Увы не помогает К сожалению найти прямое решение проблемы не удалось. Зато нашелся обходной путь: задаю фиктивному столбцу в той же строке ширину равную сумме объединенных ячеек, форматирую аналогично, заношу тот же текст и скрываю этот столбец. Excel для этой ячейки выполняет автоматическое задание высоты так как эта ячейка не является объединенной и пользователь не видит фиктивный столбец в отчете. В общем хоть решение и нашлось, но осадок остался - что мешало изначально сделать автоподбор высоты для ячеек объединенных в пределах одной строки? Если кто знает более простое решение - пишите Всем спасибо Спасибо за Ваш совет - пригодилось. Действительно интересно почему ms не сделал автоподбор ? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2005, 09:12 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
Объединенные ячейки - гадость та еще!!! Проблема с автоподбором высоты Проблема с копированием диапазонов ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2005, 13:06 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
Здраствуйте! Может это поможет если вопрос еще актуальный Вместо прямого объединения ячеек сделайте следующее: выделите нужное количество ячеек, т.е. в нашем варианте это ширина таблицы и в формате ячеек в выравнивании по горизонтали задайте "по центру выделения", оставьте уже стоящую галочку "переносить по словам" и в формате строки: "автоподбор высоты". Вроде так все работает... код для vba Range("A6:E6").Select With Selection .HorizontalAlignment = xlCenterAcrossSelection ' по центру выделения .VerticalAlignment = xlBottom .WrapText = True 'переносить по словам .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With rows("6:6").EntireRow.AutoFit ' автоподбор высоты Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
22.09.2005, 10:45 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
Нашел в инете макрос: Private Sub ВысотаСтрок() 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 Работает для объединенных столбцов, для строк надо дописывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2005, 12:32 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
LSMНашел в инете макрос: ... Работает для объединенных столбцов, для строк надо дописывать. Спасибо большое, как раз то, что было нужно. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2006, 11:37 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
А мне вот это понравилось. Круто! Юрик#Вместо прямого объединения ячеек сделайте следующее: выделите нужное количество ячеек, т.е. в нашем варианте это ширина таблицы и в формате ячеек в выравнивании по горизонтали задайте "по центру выделения", оставьте уже стоящую галочку "переносить по словам" и в формате строки: "автоподбор высоты". Вроде так все работает... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2006, 11:59 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
k-nikeА мне вот это понравилось. Круто! Юрик#Вместо прямого объединения ячеек сделайте следующее: выделите нужное количество ячеек, т.е. в нашем варианте это ширина таблицы и в формате ячеек в выравнивании по горизонтали задайте "по центру выделения", оставьте уже стоящую галочку "переносить по словам" и в формате строки: "автоподбор высоты". Вроде так все работает... прижать влево еще бы неплохо - но как ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2006, 12:38 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
MX -- ALEXприжать влево еще бы неплохо - но как ? Походу, облом-с...((( ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2006, 13:51 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
Большое спасибо Михаилу К. за идею со вставкой столбца. Тоже была проблема со вставкой текста в объединенные ячейки. Благодаря идее Михаила удачно разрешилась. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2006, 12:26 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
Я эту проблему решил так: вычисляю количество строк в многострочной объединённой ячейке, потом присваиваю высоте ячейки её высоту умножить на число строк. И всё работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2006, 14:07 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
itsme8Я эту проблему решил так: вычисляю количество строк в многострочной объединённой ячейке, потом присваиваю высоте ячейки её высоту умножить на число строк. И всё работает. Вы, по-моему, недопоняли тему, поднятую тут. Речь идет не о "многострочной" ОЯ, а о "многостолбцовой" ОЯ. В вашем же случае достаточно использовать автоматический подбор высоты строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.10.2006, 14:15 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
Я подобную проблему решил с помощью написания функции. Функция принимает строку, определяет количество символов (len) и в зависимости от числа возвращает требуемую высоту. Потом мы устанавливаем эту высоту там, где нужно. Приводу пример кода: Вызываю функцию: Код: vbnet 1. 2. 3.
Сам код функции: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Понятно, что значения высоты вы определяете сами ) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.03.2016, 13:40 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
LSM, добрый день! через alt F11 вставляю данный макрос, далее проверяю - не работает. Прошу подсказать, что нужно сделать, чтобы проверить его работу в Excel для всего листа. В VBA не сильна это мягко сказано, но есть задача для сильных духом - выравнивать высоту объединенных ячеек в Excel шаблоне отчета, который выгружается из системы SAP. Господа, помогите советом! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2016, 16:46 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
LSMНашел в инете макрос: Private Sub ВысотаСтрок() 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 Работает для объединенных столбцов, для строк надо дописывать. LSM, добрый день! повторю вопрос, но теперь уже с цитатой. Через alt F11 вставляю данный макрос, далее проверяю - не работает. Прошу подсказать, что нужно сделать, чтобы проверить его работу в Excel для всего листа. В VBA не сильна это мягко сказано, но есть задача для сильных духом - выравнивать высоту объединенных ячеек в Excel шаблоне отчета, который выгружается из системы SAP. Господа, помогите советом! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2016, 17:06 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
Народ, мне тоже надо. Неужели никто не писал. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2016, 22:56 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
LSMНашел в инете макрос: Private Sub ВысотаСтрок() 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 Работает для объединенных столбцов, для строк надо дописывать.Вот только ширина объединенной ячейки БОЛЬШЕ суммы ширин входящих в нее ячеек. На каждую границу между колонками ( на моем мониторе ) надо добавлять 0.78 (найдено экспериментально). (если быть точным, то это размер "поля вокруг пикселов", а ширина колонок изменяется, на самом деле, по пикселам, по целым пикселам. А размер этого "поля" зависит от размера и разрешения монитора :-( ) Строка с установлением ширины ячейки тогда будет такой: Код: vbnet 1.
Думаю, что разброс этого "поля" по разным мониторам будет где-то 0.7-0.8. А если это "поле" не учитывать, то высота ячейки может оказаться больше на одну строку, чем надо. А если объединено очень много узких ячеек, то разница может быть и больше одной лишней строки... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 08:05 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
um_mkaЧерез alt F11 вставляю данный макрос, далее проверяю - не работает. Прошу подсказать, что нужно сделать, чтобы проверить его работу в Excel для всего листа. В VBA не сильна это мягко сказано, но есть задача для сильных духом - выравнивать высоту объединенных ячеек в Excel шаблоне отчета, который выгружается из системы SAP.Добрый день, um_mka! Что значит "проверяю"? и что значит "не работает"? У меня работает. Проверяю так: - встаю на объединенную ячейку; - вызываю (Alt+F8) и выполняю макрос ВысотаСтрок Все работает. Важно (как писал автор) чтобы объединенная ячейка была в одну строку . (автоподбор высоты для ячейки из нескольких строк, задач более сложная и нетривиальная) Если же речь идет о том, что не получается вызывать эту процедуру из другого макроса, то оно и понятно. Нужно перед вызовом процедуры ВысотаСтрок делать активной нужную объединенную ячейку (.Select). Либо (как правильно) немного переписать процедуру, добавив параметр, через который передавать ссылку на нужную объединенную ячейку, а в самой процедуре заменить ActiveCell на этот параметр. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.09.2016, 13:42 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
kos20Народ, мне тоже надо. Неужели никто не писал.Вот доделал универсальную функцию по подбору высоты указанной ячейки : Function AutoFit_Height() Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100.
Работает и с объединенной, и с обычной ячейкой. Объединенная может быть из нескольких строк. Тогда строки делаются одинаковой нужной высоты, кроме тех, которые и так достаточно высокие. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2016, 12:54 |
|
Excel: автоматическое изменение высоты строки с объединенными ячейками
|
|||
---|---|---|---|
#18+
Что-то не сообразить как применить вашу функцию. Подскажите, плиз. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2016, 15:41 |
|
|
start [/forum/topic.php?fid=60&msg=34063087&tid=2155300]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 308ms |
total: | 465ms |
0 / 0 |