Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как выставить ширину строки / 17 сообщений из 17, страница 1 из 1
30.06.2005, 16:03:45
    #33143177
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выставить ширину строки
Есть несколько объедененных ячеек в Excel. Закидываю в них строку разделенную Enter-ами. Как мне программно
1) Выставить высоту строки под то что в нее записываю (по аналогии с AutoFit для столбца) Пробовал Rows(1).EntireRow.AutoFit() - не проходит. :-(
2) Узнать размер запиываемого текста по ширине

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

ЗЫ че то не нашел я форума именно по VBA поэтому написал тут...
...
Рейтинг: 0 / 0
30.06.2005, 16:06:50
    #33143190
MLeon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выставить ширину строки
Сделать все руками, записав в виде макроса, а потом отредактировать.
...
Рейтинг: 0 / 0
30.06.2005, 16:08:35
    #33143203
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выставить ширину строки
Не понял. Что в виде макроса? Говорю ж не работает AutoFit. Единственный способ который вижу - программно выставить Width для строки. Но вот какой?
...
Рейтинг: 0 / 0
30.06.2005, 16:17:26
    #33143247
Как выставить ширину строки
Петров Андрей
1) Выставить высоту строки под то что в нее записываю (по аналогии с AutoFit для столбца) Пробовал Rows(1).EntireRow.AutoFit() - не проходит. :-(
2) Узнать размер запиываемого текста по ширине

1.
Код: plaintext
1.
    Rows("1:1").RowHeight =  20 
    Rows("2:2").AutoFit

2.
Код: plaintext
   MsgBox Len(Range("A2"))

Символ перевода строки Chr(10) тоже считается.
...
Рейтинг: 0 / 0
30.06.2005, 16:20:39
    #33143264
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выставить ширину строки
MsgBox Len(Range("A2"))

Читайте внимательнее не ДЛИНУ а ширину текста. Текст может состоять из большого количества строк...
...
Рейтинг: 0 / 0
30.06.2005, 16:23:35
    #33143274
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выставить ширину строки
Вариант

Rows("1:1").RowHeight = 20
Rows("2:2").AutoFit

Не проходит. Все автофитится в одну строку...
...
Рейтинг: 0 / 0
30.06.2005, 16:47:57
    #33143371
Как выставить ширину строки
Или Rows("1:1").RowHeight = 20, или Rows("2:2").AutoFit.

Попробуй просто.

Код: plaintext
Rows("1:1").RowHeight =  20 
...
Рейтинг: 0 / 0
30.06.2005, 17:12:34
    #33143472
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выставить ширину строки
авторЕдинственный способ который вижу - программно выставить Width для строки. Но вот какой?

Мдась. Еще раз говорю - ВНИМАТЕЛЬНЕЕ читайте!
...
Рейтинг: 0 / 0
01.07.2005, 02:22:19
    #33144056
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выставить ширину строки
Это как раз один из тех вопросов, которые задать гораздо проще, чем точно ответить .

Поэтому ответ будет оценочным.
весь нижеприводимый vba-код будет писаться с листа, без проверки.
Претензии по качеству, работоспособности и необъявленности переменных - не принимаются.
@:)
------------------

Упрощающие предположения:

Пусть весь текст в интересующей нас ячейке набран с использованием единственного шрифта.
Пусть для начала будет не авторнесколько объедененных ячеек, а одна единственная ячейка, размеры которой и будем пытаться определить.
И текст в ней пусть "разделен" не авторEnter-ами, а "нормальными" CHR(10).

Как я понимаю, ширину надо подобрать такую, чтобы умещалась максимально длинная подстрока, разделяемая по chr(10).



определяем длину этой подстроки

Set tR = Selection
s=tR.Value2
lFontSize=tR.Font.Size

v=Split(s,chr(10))
maxlen=0

for iNdex=0 to Ubound(v)
If len(v(iNdex)) > maxlen Then maxlen=len(v(iNdex))
next

определяем приблизительную ширину клетки без учета жирности, отступа и т.д.

widthlen = maxlen * (1.06)' в ширинах цифры 0 "нормальным стилем" + потолочное усреднение ширины.

вычислияем высоту клетки.

количество предполагаемых строк
wishedRows=Ubound(v)+1

высота строки приблизительно ( без учета вертикальных отступов для "нормального стиля")
newAllRowsHeight= wishedRows(lFontSize + 2.75)

устанавливаем размер клетки

With tR
.ColumnWidth=widthlen
.RowHeight=newAllRowsHeight
End With

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




(с выражением лица)
...
Рейтинг: 0 / 0
01.07.2005, 09:30:16
    #33144217
Как выставить ширину строки
Victosha!

В этой строке

Код: plaintext
newAllRowsHeight= wishedRows(lFontSize +  2 . 75 )

забыл умножить.

Код: plaintext
newAllRowsHeight = wishedRows * (lFontSize +  2 . 75 )

Твой метод работает на необъединенной ячейке. Если ячейка объединена то вываливается ошибка 13 на строке:

Код: plaintext
v = Split(s, Chr( 10 ))
...
Рейтинг: 0 / 0
01.07.2005, 09:49:07
    #33144263
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выставить ширину строки
Пользователь2<...>
забыл умножить.


так не принимается же :))


Пользователь2
Твой метод работает на необъединенной ячейке.
Код: plaintext
v = Split(s, Chr( 10 ))


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

+2.5 - это оценка межстрочного интервала для шрифта 10 - то есть как будто
д.б. то-то около 0.25*lFontSize. Но и в этом месте пусть задумывается не я.

:)
...
Рейтинг: 0 / 0
01.07.2005, 10:39:09
    #33144399
Как выставить ширину строки
Victosha, я сделал подбор высоты исходя из количества символов Chr(10) в строке.

Код: plaintext
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.
Sub TestX()
    Dim rng As Range
    Dim intI As Integer
    Dim intCount As Integer
    Dim varText As Variant
    Dim strChar As String *  1 
    Dim intPos As Integer
    Dim lngFontSize As Integer
    
    Set rng = Selection
    
    varText = rng.Value
    lngFontSize = rng.Font.Size
    
    intCount =  0 
    
    For intI =  1  To Len(varText)
        strChar = Mid$(varText, intI,  1 )
        intPos = InStr( 1 , Chr( 10 ), strChar)
        
        If intPos >  0  Then
            intCount = intCount +  1 
        End If
    Next

    rng.RowHeight = (intCount +  1 ) *  1 . 25  * lngFontSize
End Sub
...
Рейтинг: 0 / 0
02.07.2005, 15:16:20
    #33146374
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выставить ширину строки
Понятно. Предлагается считать количество энтеров - и умножать его на высоту шрифта. Те ответ на вопрос темы - только руками. А жаль.

Спасибо.
...
Рейтинг: 0 / 0
02.07.2005, 15:18:15
    #33146375
Петров Андрей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выставить ширину строки
Теперь почеу я сразу так не сделал. Представим себе ситуацию что строка состоит из текста без Enter(ну или 10 не суть) но переноситься она все равно будет. в зависимости от размера объедененной области. Как тогда быть?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
27.09.2006, 18:30:27
    #34016885
tolikt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выставить ширину строки
Что получилось у меня и чем пока пользуюсь. Описание кода, по возможности подробное, в самом коде.

Sub RowHeightFiting1()
' Объединённая ячейка должна быть активной!!!
Application.ScreenUpdating = False

Dim MyRanAdr As String
Dim MergeAreaTotalWidth, MergeAreaTotalHeight
Dim MergeAreaFirstCellColWidth, MergeAreaFirstCellColHeight
Dim SumCW, SumRH
Dim i As Integer
Dim NewRH
Dim dCW '

MyRanAdr = ActiveCell.MergeArea.Address 'адрес области с объединённой ячейкой
MergeAreaTotalWidth = Range(MyRanAdr).Width ' ширина всей объединённой ячейки в ед. пт
MergeAreaTotalHeight = Range(MyRanAdr).Height ' высота всей объединённой ячейки в ед. пт
MergeAreaFirstCellColWidth = Range(MyRanAdr).Cells(1, 1).EntireColumn.ColumnWidth ' ширина первого столбца в объединённой ячейке
MergeAreaFirstCellColHeight = Range(MyRanAdr).Cells(1, 1).EntireRow.RowHeight ' высота первой строки в объединённой ячейке

' подсчёт суммарной ширины объед. ячейки в единицах ColumnWidth
SumCW = 0
For i = 1 To Range(MyRanAdr).Columns.Count
SumCW = SumCW + Range(MyRanAdr).Columns(i).ColumnWidth
Next

' Установка ширины первого столбца равной суммарной ширины объед. ячейки плюс поправка
' Поправка состоит из количества как бы "убранных" столбцов, умноженной на корректировочный коэффициент
Range(MyRanAdr).Cells(1, 1).ColumnWidth = SumCW + (Range(MyRanAdr).Columns.Count - 1) / 1.2 ' 1.2=3.75 / 4.5
' корректировочный коэффициент возникает из-за "краёв" каждого столбца

'далее, при необходимости, максимально точная подгонка
dCW = 0.1 ' шаг изменения ширины столбца в единицах ColumnWidth при подгонке
sgndcw = Sgn(MergeAreaTotalWidth - Range(MyRanAdr).Cells(1, 1).Width)
SumCW = Range(MyRanAdr).Cells(1, 1).ColumnWidth
While sgndcw * (MergeAreaTotalWidth - Range(MyRanAdr).Cells(1, 1).Width) > 0
SumCW = SumCW + dCW * sgndcw
Range(MyRanAdr).Cells(1, 1).EntireColumn.ColumnWidth = SumCW
Wend
While MergeAreaTotalWidth - Range(MyRanAdr).Cells(1, 1).Width < 0
SumCW = SumCW - dCW
Range(MyRanAdr).Cells(1, 1).EntireColumn.ColumnWidth = SumCW
Wend
' хотя, вообще-то, обычно эта часть процедуры не нужна
' просто на случай, если поправка к ширине первого столбца вдруг окажется неверной. Напр., из-за того, что ширина стольца меняется дискретно с шагом 0.167, но не всегда, напр., на узких ячейках (примерно < 2 симв.) поправка врёт.


' форматирование ячейки (устан. опции перенос текста и разобъединение ячейки)
Range(MyRanAdr).WrapText = True
Range(MyRanAdr).MergeCells = False

' применение Автоподбора высоты к необъединённой ячейке
Range(MyRanAdr).Cells(1, 1).EntireRow.AutoFit

' запись получившейся высоты в переменную
NewRH = Range(MyRanAdr).Cells(1, 1).EntireRow.RowHeight

' обратное объединение ячейки
Range(MyRanAdr).MergeCells = True

' принудительная установка высоты объединённой ячейки НО !!!:
' НО !!!: ТУТ ТОЛЬКО У ПЕРВОЙ СТРОКИ в случае, если объединённая ячейка состояла из нескольких строк
Range(MyRanAdr).Cells(1, 1).EntireRow.RowHeight = NewRH - (MergeAreaTotalHeight - MergeAreaFirstCellColHeight)
' Если нужно выровнять высоту строк, то можно использовать что-нибудь типа
'Range(MyRanAdr).EntireRow.RowHeight = NewRH / Range(MyRanAdr).Rows.Count

' установка изначальной ширины первого столбца
Range(MyRanAdr).Cells(1, 1).EntireColumn.ColumnWidth = MergeAreaFirstCellColWidth

Application.ScreenUpdating = True
L: ' усё
i = MsgBox("Das ist Fantastisch!" & Chr(10) & "Stimt das?", vbYesNo)
If i = vbNo Then GoTo L
End Sub


Глюков пока не замечал, но и не фантазировал в способах проверки
Впрочем, при большом количестве узких (менее примерно 3 симв) столбцов, входящих в объединённую ячейку или находящемся в ней длинном (более 100-150 символов) тексте (например, xls-фактуры, вытянутые из Консультант-плюс) может происходить следующее:
1. Новая высота объединённой ячейки выставляется как бы чуть-чуть "с запасом", т.е. больше, чем надо. Особенно в печатном виде. Но это, похоже, проблема самого Excelя.
2. Точная подгонка занимает ОЧЕНЬ много времени (более секунды). Просто процедура (там, где блок с While и написано, что эта часть обычно не используется) написана "в лоб" и совершенно неоптимизирована. Оставляю эту часть желающим на доделку. Или доделаю потом сам.
Модератор: Сообщение было отредактировано по просьбе автора
...
Рейтинг: 0 / 0
28.09.2006, 18:03:13
    #34020069
tolikt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выставить ширину строки
Код ниже немного подкорректирован, а именно:
1. Уточнена формула расчёта ширины одного столбца (в символах), равной общей ширине объед. ячейки
2. Удалены не очень нужные процедуры (лишние расчёты, подгонка) в соотвествии с п.1 и из предположения, что общая ширина объед. ячейки больше 1 (симв).
3. Удалены комментарии и прочее


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Sub RowHeightFiting2()
' Объединённая ячейка должна быть активной!!!
Application.ScreenUpdating = False
Dim MyRanAdr As String
Dim MergeAreaTotalHeight, NewRH
Dim MergeAreaFirstCellColWidth, MergeAreaFirstCellColHeight
MyRanAdr = ActiveCell.MergeArea.Address 'адрес области с объединённой ячейкой
MergeAreaTotalHeight = Range(MyRanAdr).Height ' высота всей объединённой ячейки в ед. пт
MergeAreaFirstCellColWidth = Range(MyRanAdr).Cells( 1 ,  1 ).EntireColumn.ColumnWidth ' ширина первого столбца в объединённой ячейке
MergeAreaFirstCellColHeight = Range(MyRanAdr).Cells( 1 ,  1 ).EntireRow.RowHeight ' высота первой строки в объединённой ячейке
Range(MyRanAdr).Cells( 1 ,  1 ).ColumnWidth = (Range(MyRanAdr).Width -  3 . 75 ) /  4 . 5  'установка ширины первого столбца объед. ячейки равной общей ширине объед. ячейки  '''БЕЗ ПОДГОНКИ!!!
Range(MyRanAdr).WrapText = True
Range(MyRanAdr).MergeCells = False
Range(MyRanAdr).Cells( 1 ,  1 ).EntireRow.AutoFit
NewRH = Range(MyRanAdr).Cells( 1 ,  1 ).EntireRow.RowHeight
Range(MyRanAdr).MergeCells = True
Range(MyRanAdr).Cells( 1 ,  1 ).EntireColumn.ColumnWidth = MergeAreaFirstCellColWidth
Range(MyRanAdr).Cells( 1 ,  1 ).EntireRow.RowHeight = NewRH - (MergeAreaTotalHeight - MergeAreaFirstCellColHeight) ' для 1-й строки в объед.ячейке
'Range(MyRanAdr).EntireRow.RowHeight = NewRH / Range(MyRanAdr).Rows.Count 'вместо предыдущей стоки кода для равной высоты всех строк в объед.ячейке
Application.ScreenUpdating = True
End Sub 

Код проверен в рабочих условиях, без хитрых изысков.
Код простой, пояснения не требует.
Кроме, пожалуй, строки с Range(MyRanAdr).Cells(1, 1).ColumnWidth = (Range(MyRanAdr).Width - 3.75) / 4.5.
Здесь: 3.75 - размер "боковушек" у ячейки (ширина в пт); 4.5 - ширина в пт одного символа стиля Normal
...
Рейтинг: 0 / 0
29.09.2006, 14:44:50
    #34022391
tolikt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как выставить ширину строки
Мой предыдущий ответ с подкорректированным кодом имеет очень жуткий недостаток. Он работает только с тем стилем Normal, для которого рассчитаны коэффициенты ширин символа и краёв столбца. В данном случае - шрифт Times New Roman Cyr 10пт.
tolikt Range(MyRanAdr).Cells(1, 1).ColumnWidth = (Range(MyRanAdr).Width - 3.75) / 4.5
Здесь: 3.75 - размер "боковушек" (отступов по краям) у ячейки (ширина в пт); 4.5 - ширина в пт одного символа стиля Normal (т.е. единицы измерения методом ColumnWidth)
И если невнимательно прочитать два предыдущих поста , а сразу воспользоваться кодом, то на других стилях Normal возможно неверное выполнение кода. И про эту особенность я забыл упомянуть.
Теперь исправляю.

Сначала отдельно выкладываю код MiddEdgeWidth с комментариями. Он определяет ширину в пт середины и краёв для стиля Normal в активной рабочей книге.
А после - RowHeightFiting3 - итоговый код подгонки высоты объединённой ячейки с учётом текущего стиля Normal.


Код: plaintext
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.
Sub MiddEdgeWidth() 
' Определение ширины (в пт) единицы символа ("середины") и краёв ("боковушек") для текущего стиля Normal 
' Для этого определения используется самая последняя ячейка, но можно использовать любую, в данном случае не важно 
Dim MyNormalMiddleWidth, MyNormalEdgeWidth 
Dim c1, c2, w1, w2 'временные переменные ширин столбцов в симв и пт 
Dim MyTempCell As Range 
Dim OldColWidth 'ширина временной ячейки до манипуляций (чтобы потом вернуть обратно, на всякий случай) 
Set MyTempCell = Cells( 65536 ,  256 ) 
OldColWidth = MyTempCell.ColumnWidth 
c1 =  10  ' ширину в симв можно установить любую, но точно не менее 1 (где нельзя реально определить нужные нам данные), 
c2 =  15  ' и лучше более 3 и целочисленные (для уменьшения влияния ошибки округления..... впрочем, в коде эта возможная ошибка учитывается) 

' Установка ширины ячейки в симв и получения получившихся реальных ширин в симв и пт 
MyTempCell.ColumnWidth = c1 
c1 = MyTempCell.ColumnWidth 
w1 = MyTempCell.Width 
MyTempCell.ColumnWidth = c2 
c2 = MyTempCell.ColumnWidth 
w2 = MyTempCell.Width 

' Вычисление ширин "середины" и "боковушек" (пришлось вспомнить решение системы из 2-х простых уравнений за 5-й класс школы) 
MyNormalMiddleWidth = Format((w2 - w1) / (c2 - c1), "#0.00") ' тут Format - для округления возможной ошибки вычисления 
MyNormalEdgeWidth = Format((c2 * w1 - c1 * w2) / (c2 - c1), "#0.00") 

' Возврат в исходное состояние 
MyTempCell.ColumnWidth = OldColWidth 

'Вывод сообщения о текущем стиле Normal и его ширинах 
MsgBox "Шрифт текущего стиля   -    " & Application.StandardFont & _ 
Chr( 10 ) & "Его размер                      -    " & Application.StandardFontSize & _ 
Chr( 10 ) & Chr( 10 ) & "Ширина ""середины""      -      " & MyNormalMiddleWidth & _ 
Chr( 10 ) & "Ширина ""краёв""             -      " & MyNormalEdgeWidth 
End Sub





Код: plaintext
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.
Sub RowHeightFiting3() 
' Объединённая ячейка должна быть активной!!! 
' Если требуется подобрать высоту для неактивной ячейки, то нужно переменной MyRanAdr присвоить ПОЛНЫЙ адрес области объединённой ячейки  '(Напр, MyRanAdr = "D4:G7" вместо строки MyRanAdr = ActiveCell.MergeArea.Address) 
Application.ScreenUpdating = False 

Dim MyNormalMiddleWidth, MyNormalEdgeWidth 
Dim c1, c2, w1, w2 'временные переменные ширин столбцов в симв и пт 
Dim MyTempCell As Range 
Dim OldColWidth 
Set MyTempCell = Cells( 65536 ,  256 ) 
OldColWidth = MyTempCell.ColumnWidth 
c1 =  10  ' ширину в симв можно установить любую, но точно не менее 1 (где нельзя реально определить нужные нам данные), 
c2 =  15  ' и лучше более 3 и целочисленные (для уменьшения влияния ошибки округления) 
MyTempCell.ColumnWidth = c1 
c1 = MyTempCell.ColumnWidth 
w1 = MyTempCell.Width 
MyTempCell.ColumnWidth = c2 
c2 = MyTempCell.ColumnWidth 
w2 = MyTempCell.Width 
MyNormalMiddleWidth = Format((w2 - w1) / (c2 - c1), "#0.00") 
MyNormalEdgeWidth = Format((c2 * w1 - c1 * w2) / (c2 - c1), "#0.00") 
MyTempCell.ColumnWidth = OldColWidth 
Dim MyRanAdr As String 
Dim MergeAreaTotalHeight, NewRH 
Dim MergeAreaFirstCellColWidth, MergeAreaFirstCellColHeight 
MyRanAdr = ActiveCell.MergeArea.Address 'адрес области с объединённой ячейкой 
MergeAreaTotalHeight = Range(MyRanAdr).Height ' высота всей объединённой ячейки в ед. пт 
MergeAreaFirstCellColWidth = Range(MyRanAdr).Cells( 1 ,  1 ).EntireColumn.ColumnWidth ' ширина первого столбца в объединённой ячейке 
MergeAreaFirstCellColHeight = Range(MyRanAdr).Cells( 1 ,  1 ).EntireRow.RowHeight ' высота первой строки в объединённой ячейке 
Range(MyRanAdr).Cells( 1 ,  1 ).ColumnWidth = (Range(MyRanAdr).Width - MyNormalEdgeWidth) / MyNormalMiddleWidth 'установка ширины первого столбца объед. ячейки равной общей ширине объед. ячейки  '''БЕЗ ПОДГОНКИ!!! 
Range(MyRanAdr).WrapText = True 
Range(MyRanAdr).MergeCells = False 
Range(MyRanAdr).Cells( 1 ,  1 ).EntireRow.AutoFit 
NewRH = Range(MyRanAdr).Cells( 1 ,  1 ).EntireRow.RowHeight 
Range(MyRanAdr).MergeCells = True 
Range(MyRanAdr).Cells( 1 ,  1 ).EntireColumn.ColumnWidth = MergeAreaFirstCellColWidth 
Range(MyRanAdr).Cells( 1 ,  1 ).EntireRow.RowHeight = NewRH - (MergeAreaTotalHeight - MergeAreaFirstCellColHeight) ' для 1-й строки в объед.ячейке 
'Range(MyRanAdr).EntireRow.RowHeight = NewRH / Range(MyRanAdr).Rows.Count 'для равной высоты всех строк в объед.ячейке 
Application.ScreenUpdating = True 
End Sub 



Замечания.
Метод Autofit выставляет высоту строки "с запасом".
Т.е. например: Шрифт Times New Roman Cyr 10пт визуально прекрасно входит в строку высотой 10.50. Но Autofit высталяет высоту 12.75. А, напр., в документах с большим количеством строк эти "вынужденные излишества" мешают - искажают (увеличивают) размер документа.
Поэтому я на практике применяю сначала Autofit к какой-либо пустой ячейке той же строки, что и первая строка объединённой ячейки и отформатированной так же, как и текущая объединённая. И после Autofit объединённой ячейки выставляю высоту строки за минусом разницы между первоначальной высотой ячейки и высотой пустой ячейки.


Код: plaintext
Вроде, понятно объяснил....
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как выставить ширину строки / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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