Высота строк в excel миф

Изменение размера ячейки в VBA Excel. Высота строки, ширина столбца, автоподбор ширины ячейки. Свойства RowHeight и ColumnWidth объекта Range.

Размер ячейки

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

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

Информационные окна с высотой строки и шириной столбца в Excel

Высота строки и ширина столбца в Excel

Программно, без дополнительных макросов, можно изменять высоту строки только в пунктах, а ширину столбца только в символах.

На сайте поддержки офисных приложений Microsoft так написано об этих величинах:

  • высота строки может принимать значение от 0 до 409 пунктов, причем 1 пункт приблизительно равен 1/72 дюйма или 0,035 см;
  • ширина столбца может принимать значение от 0 до 255, причем это значение соответствует количеству символов, которые могут быть отображены в ячейке.

Смотрите, как сделать все ячейки рабочего листа квадратными.

Высота строки

Для изменения высоты строки используйте свойство RowHeight объекта Range. И не важно, будет объект Range представлять из себя выделенный произвольный диапазон, отдельную ячейку, целую строку или целый столбец — высота всех строк, пересекающихся с объектом Range будет изменена после присвоения свойству RowHeight этого объекта нового значения.

Примеры изменения высоты строк:

Пример 1
Изменение высоты отдельной ячейки:

ActiveCell.RowHeight = 10

в результате, строка, в которой находится активная ячейка, приобретает высоту, равную 10 пунктам.

Пример 2
Изменение высоты строки:

в результате, третья строка рабочего листа приобретает высоту, равную 30 пунктам.

Пример 3
Изменение высоты ячеек заданного диапазона:

Range(«A1:D6»).RowHeight = 20

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

Пример 4
Изменение высоты ячеек целого столбца:

Columns(5).RowHeight = 15

в результате, всем строкам рабочего листа будет назначена высота, равная 15 пунктам.

Ширина столбца

Для изменения ширины столбца используйте свойство ColumnWidth объекта Range. Как и в случае с высотой строки, не важно, будет объект Range представлять из себя выделенный произвольный диапазон, отдельную ячейку, целую строку или целый столбец — ширина всех столбцов, пересекающихся с объектом Range будет изменена после присвоения свойству ColumnWidth этого объекта нового значения.

Примеры изменения ширины столбцов:

Пример 1
Изменение ширины отдельной ячейки:

ActiveCell.ColumnWidth = 15

в результате, столбец, в котором находится активная ячейка, приобретает ширину, равную 15 символам.

Пример 2
Изменение ширины столбца:

Columns(3).ColumnWidth = 50

в результате, третий столбец рабочего листа (столбец «C») приобретает ширину, равную 50 символам.

Пример 3
Изменение ширины ячеек заданного диапазона:

Range(«A1:D6»).ColumnWidth = 25

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

Пример 4
Изменение ширины ячеек целой строки:

в результате, всем столбцам рабочего листа будет назначена ширина, равная 35 символам.

Автоподбор ширины

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

‘запишем для примера в любую ячейку рабочего

‘листа какой-нибудь текст, например, такой:

Cells(5, 5) = «Автоподбор ширины ячейки»

‘теперь подгоним ширину ячейки, а точнее

‘столбца, в котором эта ячейка находится:

Cells(5, 5).EntireColumn.AutoFit

Имейте в виду, что ширина столбца будет подогнана по расположенной в этом столбце ячейке с самым длинным содержимым. Например, если длина содержимого ячейки Cells(7, 5) будет превышать длину содержимого ячейки Cells(5, 5), то автоподбор ширины пятого столбца произойдет по содержимому ячейки Cells(7, 5), несмотря на то, что в строке кода указана другая ячейка.

Как осуществить автоподбор ширины объединенной ячейки, в которой метод AutoFit не работает, смотрите в следующей статье.

Skip to content

Change Row Height and Column Width using Excel VBA

Home » Excel VBA » Change Row Height and Column Width using Excel VBA

Description:

Some times we may enter the data into cells more than it’s width. In this case we can not able to see entire text. So we can change row height and Column width using excel using VBA. So that we can see entire data in that cell. When you have more lengthy data in cells, you can Auto Adjust Column Width or Row Height in Excel VBA to show the entire data. So that users can see the entire data in the cells. We will see with Examples.

Changing Row Height in Excel VBA

Change Row Height in Excel VBA
We can change row height in Excel using RowHeight Property of a Row in VBA. See the following example to do it.

Examples

The following example will change the height of the 3rd Row to 25.

Sub sbChangeRowHeight()

'Changing the 3rd row Height
Rows(3).RowHeight = 25

End Sub

We can also set the height for multiple rows, the following example will change the height of the 3rd to 20th row height to 25.

Sub sbChangeRowHeightMulti()

'Changing the 3rd-25the row Height
Rows("3:25").RowHeight = 25

End Sub
Instructions:
  1. Open an excel workbook
  2. Press Alt+F11 to open VBA Editor
  3. Insert a Module for Insert Menu
  4. Copy the above code and Paste in the code window
  5. Save the file as macro enabled workbook
  6. Press F5 to execute itit

Changing Column Width in Excel VBA

Change Column Width in Excel VBA
We can change column width in Excel using ColumnWidth Property of a Column in VBA. See the following example to do it.

In this Example I am changing the Column B width to 25.

Sub sbChangeColumnWidth()

Columns("B").ColumnWidth = 25

End Sub

Examples

We can also set the column width for multiple columns at a time, see this Example I am changing the Column B to E width to 25.

Sub sbChangeColumnWidthMulti()

Columns("B:E").ColumnWidth = 25

End Sub
Instructions:
  1. Open an excel workbook
  2. Press Alt+F11 to open VBA Editor
  3. Insert a Module for Insert Menu
  4. Copy the above code and Paste in the code window
  5. Save the file as macro enabled workbook
  6. Press F5 to execute it

Auto Adjust Column Width and Row Height using Excel VBA

Auto Adjust Column Width - Row Height in Excel VBA
We can use AutoFit method of Columns and Rows in Excel using VBA to Auto Adjust the rows and Columns.

Examples

Code to Auto Adjust Column Width

Following are the example to show you how to do this.

Sub sbAutoAdjustColumnWidth()

    Columns(2).AutoFit

End Sub
Code to Auto fit Row Height

Following are the example to show you how to do this.

   Sub sbAutoAdjustRowHight()
   Rows(2).AutoFit
End Sub
Instructions:

Follow the instructions below to test the codes above.

  1. Open an excel workbook
  2. Press Alt+F11 to open VBA Editor
  3. Insert a Module for Insert Menu
  4. Copy the above code and Paste in the code window
  5. Save the file as macro enabled workbook
  6. Press F5 to execute it
Effortlessly Manage Your Projects and Resources
120+ Professional Project Management Templates!

A Powerful & Multi-purpose Templates for project management. Now seamlessly manage your projects, tasks, meetings, presentations, teams, customers, stakeholders and time. This page describes all the amazing new features and options that come with our premium templates.

Save Up to 85% LIMITED TIME OFFER
Excel VBA Project Management Templates
All-in-One Pack
120+ Project Management Templates
Essential Pack
50+ Project Management Templates

Excel Pack
50+ Excel PM Templates

PowerPoint Pack
50+ Excel PM Templates

MS Word Pack
25+ Word PM Templates

Ultimate Project Management Template

Ultimate Resource Management Template

Project Portfolio Management Templates

Related Posts

    • Description:
    • Changing Row Height in Excel VBA
    • Examples
    • Changing Column Width in Excel VBA
    • Examples
    • Auto Adjust Column Width and Row Height using Excel VBA
    • Examples

VBA Reference

Effortlessly
Manage Your Projects

120+ Project Management Templates

Seamlessly manage your projects with our powerful & multi-purpose templates for project management.

120+ PM Templates Includes:

4 Comments

  1. Koert penne
    March 29, 2016 at 2:35 PM — Reply

    I wanted the row height for content of one column, regardsless what was in the other columns. I did it as follows:

    Sub rowheight_one_column()

    Column = InputBox(“Hoeveelste kolom?”) + 0

    Rows(20).Delete

    For x = 4 To 13
    Cells(20, Column) = Cells(x, Column)
    Rows(20).AutoFit
    hoogte = Cells(20, Column).RowHeight
    Rows(x).RowHeight = hoogte
    Next x

    Rows(20).Delete

    End Sub

  2. Sathish
    October 26, 2016 at 11:39 AM — Reply

    Please help me for auto fit the entire sheet1

  3. Jack
    February 21, 2017 at 7:43 PM — Reply

    where have you declared your Variables, It does confuse people when your code is not neat and is exposed on the Internet where everybody does search and get stuck.

  4. dskar
    April 13, 2017 at 7:10 AM — Reply

    the difference between writing the code in code window and a module?

Effectively Manage Your
Projects and  Resources

With Our Professional and Premium Project Management Templates!

ANALYSISTABS.COM provides free and premium project management tools, templates and dashboards for effectively managing the projects and analyzing the data.

We’re a crew of professionals expertise in Excel VBA, Business Analysis, Project Management. We’re Sharing our map to Project success with innovative tools, templates, tutorials and tips.

Project Management
Excel VBA

Download Free Excel 2007, 2010, 2013 Add-in for Creating Innovative Dashboards, Tools for Data Mining, Analysis, Visualization. Learn VBA for MS Excel, Word, PowerPoint, Access, Outlook to develop applications for retail, insurance, banking, finance, telecom, healthcare domains.

Analysistabs Logo

Page load link

VBA Projects With Source Code

3 Realtime VBA Projects
with Source Code!

Take Your Projects To The Next Level By Exploring Our Professional Projects

Go to Top

Хитрости »

10 Август 2016              35698 просмотров


Подбор высоты строки/ширины столбца объединенной ячейки

Для начала немного теории. Если в ячейках листа Excel записан некий длинный текст, то обычно устанавливают перенос на строки(вкладка Главная -группа ВыравниваниеПеренос текста), чтобы текст не растягивался на весь экран, а умещался в ячейке. При этом высота ячейки тоже должна измениться, чтобы отобразить все содержимое. Если речь идет всего об одной простой ячейке — проблем не возникает. Обычно, чтобы установить высоту строки на основании содержимого ячейки, достаточно навести курсор мыши в заголовке строк на границу строки(курсор приобретет вид направленных в разные стороны стрелок — Стрелки) и дважды быстро щелкнуть левой кнопкой мыши. Тоже самое можно сделать и для ширины столбцов.
Но с объединенными ячейками такой фокус не прокатывает — ширина и высота для этих ячеек так не подбирается, сколько ни щелкай и приходится вручную подгонять каждую, чтобы текст ячейки отображался полностью:
Текст в объединенных ячейках
Стандартными средствами такой автоподбор не сделать, но вот при помощи VBA — без проблем. Ниже приведена функция, которая поможет подобрать высоту и ширину объединенных ячеек на основании их содержимого.

'---------------------------------------------------------------------------------------
' Procedure : RowHeightForContent
' Author    : The_Prist(Щербаков Дмитрий)
'             http://www.excel-vba.ru
' Purpose   : Функция подбирает высоту строки/ширину столбца объединенных ячеек по содержимому
'---------------------------------------------------------------------------------------
Function RowColHeightForContent(rc As Range, Optional bRowHeight As Boolean = True)
'rc -         ячейка, высоту строки или ширину столбца которой необходимо подобрать
'bRowHeight - True - если необходимо подобрать высоту строки
'             False - если необходимо подобрать ширину столбца
    Dim OldR_Height As Single, OldC_Widht As Single
    Dim MergedR_Height As Single, MergedC_Widht As Single
    Dim CurrCell As Range
    Dim ih As Integer
    Dim iw As Integer
    Dim NewR_Height As Single, NewC_Widht As Single
    Dim ActiveCellHeight As Single
 
    If rc.MergeCells Then
        With rc.MergeArea 'если ячейка объединена
            'запоминаем кол-во столбцов
            iw = .Columns(.Columns.Count).Column - rc.Column + 1
            'запоминаем кол-во строк.
            ih = .Rows(.Rows.Count).Row - rc.Row + 1
            'Определяем высоту и ширину объединения ячеек
            MergedR_Height = 0
            For Each CurrCell In .Rows
                MergedR_Height = CurrCell.RowHeight + MergedR_Height
            Next
            MergedC_Widht = 0
            For Each CurrCell In .Columns
                MergedC_Widht = CurrCell.ColumnWidth + MergedC_Widht
            Next
            'запоминаем высоту и ширину первой ячейки из объединенных
            OldR_Height = .Cells(1, 1).RowHeight
            OldC_Widht = .Cells(1, 1).ColumnWidth
            'отменяем объединение ячеек
            .MergeCells = False
            'назначаем новую высоту и ширину для первой ячейки
            .Cells(1).RowHeight = MergedR_Height
            .Cells(1, 1).EntireColumn.ColumnWidth = MergedC_Widht
            'если необходимо изменить высоту строк
            If bRowHeight Then
                '.WrapText = True 'раскомментировать, если необходимо принудительно выставлять перенос текста
                .EntireRow.AutoFit
                NewR_Height = .Cells(1).RowHeight    'запоминаем высоту строки
                .MergeCells = True
                If OldR_Height < (NewR_Height / ih) Then
                    .RowHeight = NewR_Height / ih
                Else
                    .RowHeight = OldR_Height
                End If
                'возвращаем ширину столбца первой ячейки
                .Cells(1, 1).EntireColumn.ColumnWidth = OldC_Widht
            Else 'если необходимо изменить ширину столбца
                .EntireColumn.AutoFit
                NewC_Widht = .Cells(1).EntireColumn.ColumnWidth    'запоминаем ширину столбца
                .MergeCells = True
                If OldC_Widht < (NewC_Widht / iw) Then
                    .ColumnWidth = NewC_Widht / iw
                Else
                    .ColumnWidth = OldC_Widht
                End If
                'возвращаем высоту строки первой ячейки
                .Cells(1, 1).RowHeight = OldR_Height
            End If
        End With
    End If
End Function

Пара замечаний:

  • т.к. нельзя выставить и автоширину и автовысоту — то функция подбирает либо высоту, либо ширину, что логично
  • чтобы подбор по высоте ячеек сработал, для ячейки должен быть выставлен перенос строк(вкладка Главная -группа ВыравниваниеПеренос текста). Если ячеек много и выставлять вручную лень — можно просто убрать апостроф перед точкой в строке:’.WrapText = True ‘раскомментировать, если необходимо принудительно выставлять перенос текстатогда код сам проставит переносы. Но тут следует учитывать, что в данном случае перенос будет выставлен для всех ячеек, что не всегда отвечает условиям
  • функция подбирает высоту и ширину исключительно для объединенных ячеек. Если ячейка не объединена — код оставит её без изменений

Теперь о том, как это работает и как применять. Для начала необходимо приведенный выше код функции вставить в стандартный модуль. Сама по себе функция работать не будет — её надо вызывать из другого кода, который определяет какие ячейки обрабатывать. В качестве такого кода я предлагаю следующий:

Sub ChangeRowColHeight()
    Dim rc As Range
    Dim bRow As Boolean
    bRow = (MsgBox("Изменять высоту строк?", vbQuestion + vbYesNo, "www.excel-vba.ru") = vbYes)
    'bRow = True:  для изменения высоты строк
    'bRow = False: для изменения ширины столбцов
    Application.ScreenUpdating = False
    For Each rc In Selection
        RowColHeightForContent rc, bRow
    Next
    Application.ScreenUpdating = True
End Sub

Этот код также необходимо вставить в стандартный модуль. Теперь его можно будет вызвать из этой книги, нажатием клавиш Alt+F8 и выбрав ChangeRowColHeight, или создав на листе кнопку и назначив ей макрос. После этого достаточно будет выделить диапазон ячеек, среди которых есть объединенные и вызвать макрос ChangeRowColHeight. Для всех объединенных ячеек в выделенном диапазоне будет подобрана высота или ширина.
Чтобы было нагляднее — я приложил пример, в котором помимо самих кодов есть вырезка из стандартной накладной. Именно в таких документах наиболее часто встречаются подобные казусы и необходимость подбирать высоту и ширину объединенных ячеек.
Скачать пример:

  Tips_Macro_HeightWidthInMergeCell.xls (64,0 KiB, 3 476 скачиваний)

Если подобную операцию приходится производить постоянно — советую коды записать в надстройку: Как создать свою надстройку?. Так же можно воспользоваться уже готовым решением в составе MulTEx — Высота/Ширина объединенной ячейки.


Статья помогла? Поделись ссылкой с друзьями!

  Плейлист   Видеоуроки


Поиск по меткам



Access
apple watch
Multex
Power Query и Power BI
VBA управление кодами
Бесплатные надстройки
Дата и время
Записки
ИП
Надстройки
Печать
Политика Конфиденциальности
Почта
Программы
Работа с приложениями
Разработка приложений
Росстат
Тренинги и вебинары
Финансовые
Форматирование
Функции Excel
акции MulTEx
ссылки
статистика

{quote}{login=Ан13}{date=26.06.2008 02:24}{thema=Как изменить высоту строки в VB}{post}Ответьте пожалуйста на мой вопрос!!!{/post}{/quote}  

  Смотрите код.  

  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  
If NewRH < MergeAreaTotalHeight Then ‘если новая высота меньше изначальной, то оставляем изначальную высоту!  
Range(MyRanAdr).Cells(1, 1).EntireRow.RowHeight = MergeAreaFirstCellColHeight  
Else  
Range(MyRanAdr).Cells(1, 1).EntireRow.RowHeight = NewRH — (MergeAreaTotalHeight — MergeAreaFirstCellColHeight) ‘ для 1st строки в объед.ячейке  
End If  
‘Range(MyRanAdr).EntireRow.RowHeight = NewRH / Range(MyRanAdr).Rows.Count ‘для равной высоты всех строк в объед.ячейке (вместо предыдущего блока If)  
Application.ScreenUpdating = True  
End Sub

Содержание

  • Установить ширину столбца с помощью VBA
  • Установить высоту строки с помощью VBA
  • Ширина столбца автозаполнения
  • Автоподбор высоты строки
  • Установить ширину ячейки
  • Установить высоту ячейки
  • Получить ширину столбца
  • Получить высоту строки

В этом руководстве будет показано, как установить высоту строки и ширину столбца с помощью VBA.

Высоту строк и ширину столбцов Excel можно изменить в VBA, задав свойства .RowHeight и .ColumnWidth.

Макрос для установки ширина колонки столбцов от A до E:

123 Sub Column_Width ()Столбцы («A: E»). Ширина столбца = 30Конец подписки

Установить высоту строки с помощью VBA

Макрос для установки высота строки строки 1:

123 Sub RowHeight ()Ряды («1: 1»). RowHeight = 30Конец подписки

Ширина столбца автозаполнения

Excel предлагает возможность «Автозаполнения» ширины столбцов. Эта функция регулирует ширину столбца так, чтобы столбцы были достаточно широкими, чтобы вместить весь текст, найденный в этом столбце.

Чтобы автоматически подогнать ширину столбцов в VBA:

1 Столбцы («A: B»). Автоподбор

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

Автоподбор высоты строки

Вы также можете автоматически подогнать высоту строк, используя аналогичный метод:

1 Ряды («1: 2»). Автоподбор

Установить ширину ячейки

Вы также можете настроить ширину столбца, указав ячейку:

1 Диапазон («a1»). CompleteColumn.ColumnWidth = 20

Установить высоту ячейки

Или отрегулируйте высоту строки, указав ячейку:

1 Диапазон («a1»). CompleteRow.RowHeight = 10

Получить ширину столбца

Чтобы получить ширину столбца столбца:

12 dim iColumnWidth до тех пор, покаiColumnWidth = columns («a»). ColumnWidth

Примечание. Это вернет Null, если все столбцы в диапазоне не имеют одинаковой ширины.

Получить высоту строки

Точно так же вы можете получить высоту строки:

12 dim iRowHeight до тех пор, покаiRowHeight = rows («1»). RowHeight

Вы поможете развитию сайта, поделившись страницей с друзьями

Содержание

  1. Подбор высоты строки/ширины столбца объединенной ячейки
  2. VBA Excel. Автоподбор высоты объединенной ячейки
  3. Автоподбор высоты ячейки
  4. Обработка списка ячеек
  5. 12 комментариев для “VBA Excel. Автоподбор высоты объединенной ячейки”
  6. VBA AutoFit (Rows, Column, or the Entire Worksheet)
  7. Key Points
  8. AutoFit a Column
  9. AutoFit a Row
  10. AutoFit UsedRange (Rows and Columns)
  11. AutoFit Entire Worksheet

Подбор высоты строки/ширины столбца объединенной ячейки

Для начала немного теории. Если в ячейках листа Excel записан некий длинный текст, то обычно устанавливают перенос на строки(вкладка Главная -группа ВыравниваниеПеренос текста), чтобы текст не растягивался на весь экран, а умещался в ячейке. При этом высота ячейки тоже должна измениться, чтобы отобразить все содержимое. Если речь идет всего об одной простой ячейке — проблем не возникает. Обычно, чтобы установить высоту строки на основании содержимого ячейки, достаточно навести курсор мыши в заголовке строк на границу строки(курсор приобретет вид направленных в разные стороны стрелок — ) и дважды быстро щелкнуть левой кнопкой мыши. Тоже самое можно сделать и для ширины столбцов.
Но с объединенными ячейками такой фокус не прокатывает — ширина и высота для этих ячеек так не подбирается, сколько ни щелкай и приходится вручную подгонять каждую, чтобы текст ячейки отображался полностью:

Стандартными средствами такой автоподбор не сделать, но вот при помощи VBA — без проблем. Ниже приведена функция, которая поможет подобрать высоту и ширину объединенных ячеек на основании их содержимого.

‘————————————————————————————— ‘ Procedure : RowHeightForContent ‘ Author : The_Prist(Щербаков Дмитрий) ‘ http://www.excel-vba.ru ‘ Purpose : Функция подбирает высоту строки/ширину столбца объединенных ячеек по содержимому ‘————————————————————————————— Function RowColHeightForContent(rc As Range, Optional bRowHeight As Boolean = True) ‘rc — ячейка, высоту строки или ширину столбца которой необходимо подобрать ‘bRowHeight — True — если необходимо подобрать высоту строки ‘ False — если необходимо подобрать ширину столбца Dim OldR_Height As Single, OldC_Widht As Single Dim MergedR_Height As Single, MergedC_Widht As Single Dim CurrCell As Range Dim ih As Integer Dim iw As Integer Dim NewR_Height As Single, NewC_Widht As Single Dim ActiveCellHeight As Single If rc.MergeCells Then With rc.MergeArea ‘если ячейка объединена ‘запоминаем кол-во столбцов iw = .Columns(.Columns.Count).Column — rc.Column + 1 ‘запоминаем кол-во строк. ih = .Rows(.Rows.Count).Row — rc.Row + 1 ‘Определяем высоту и ширину объединения ячеек MergedR_Height = 0 For Each CurrCell In .Rows MergedR_Height = CurrCell.RowHeight + MergedR_Height Next MergedC_Widht = 0 For Each CurrCell In .Columns MergedC_Widht = CurrCell.ColumnWidth + MergedC_Widht Next ‘запоминаем высоту и ширину первой ячейки из объединенных OldR_Height = .Cells(1, 1).RowHeight OldC_Widht = .Cells(1, 1).ColumnWidth ‘отменяем объединение ячеек .MergeCells = False ‘назначаем новую высоту и ширину для первой ячейки .Cells(1).RowHeight = MergedR_Height .Cells(1, 1).EntireColumn.ColumnWidth = MergedC_Widht ‘если необходимо изменить высоту строк If bRowHeight Then ‘.WrapText = True ‘раскомментировать, если необходимо принудительно выставлять перенос текста .EntireRow.AutoFit NewR_Height = .Cells(1).RowHeight ‘запоминаем высоту строки .MergeCells = True If OldR_Height ‘ .WrapText = True ‘раскомментировать, если необходимо принудительно выставлять перенос текста тогда код сам проставит переносы. Но тут следует учитывать, что в данном случае перенос будет выставлен для всех ячеек, что не всегда отвечает условиям

  • функция подбирает высоту и ширину исключительно для объединенных ячеек. Если ячейка не объединена — код оставит её без изменений
  • Теперь о том, как это работает и как применять. Для начала необходимо приведенный выше код функции вставить в стандартный модуль. Сама по себе функция работать не будет — её надо вызывать из другого кода, который определяет какие ячейки обрабатывать. В качестве такого кода я предлагаю следующий:

    Sub ChangeRowColHeight() Dim rc As Range Dim bRow As Boolean bRow = (MsgBox(«Изменять высоту строк?», vbQuestion + vbYesNo, «www.excel-vba.ru») = vbYes) ‘bRow = True: для изменения высоты строк ‘bRow = False: для изменения ширины столбцов Application.ScreenUpdating = False For Each rc In Selection RowColHeightForContent rc, bRow Next Application.ScreenUpdating = True End Sub

    Этот код также необходимо вставить в стандартный модуль. Теперь его можно будет вызвать из этой книги, нажатием клавиш Alt+F8 и выбрав ChangeRowColHeight , или создав на листе кнопку и назначив ей макрос. После этого достаточно будет выделить диапазон ячеек, среди которых есть объединенные и вызвать макрос ChangeRowColHeight. Для всех объединенных ячеек в выделенном диапазоне будет подобрана высота или ширина.
    Чтобы было нагляднее — я приложил пример, в котором помимо самих кодов есть вырезка из стандартной накладной. Именно в таких документах наиболее часто встречаются подобные казусы и необходимость подбирать высоту и ширину объединенных ячеек.
    Скачать пример:

    Tips_Macro_HeightWidthInMergeCell.xls (64,0 KiB, 3 444 скачиваний)

    Если подобную операцию приходится производить постоянно — советую коды записать в надстройку: Как создать свою надстройку?. Так же можно воспользоваться уже готовым решением в составе MulTEx — Высота/Ширина объединенной ячейки.

    Источник

    VBA Excel. Автоподбор высоты объединенной ячейки

    Автоподбор высоты объединенной ячейки с помощью кода VBA Excel, когда метод AutoFit не работает. Обработка ячеек по списку адресов из массива.

    Автоподбор высоты ячейки

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

    Здесь мы рассмотрим макрос для автоподбора высоты ячейки, объединенной с другими по горизонтали в одной строке, которые обычно используются в заголовках электронных таблиц Excel. Для объединенной ячейки должен быть задан перенос текста по словам: Формат ячеек >> Выравнивание >> переносить текст .

    Высота ячейки будет такой, чтобы уместились все строки, на которые будет разбит контент в зависимости от ширины объединенной ячейки.

    Для решения задачи по автоподбору высоты необходимо с помощью кода VBA определить:

    1. Длину текста (количество символов) в объединенной ячейке.
    2. Ширину объединенной ячейки. Длина одного символа текста со шрифтом и его размером по умолчанию приблизительно соответствует длине символа, в котором измеряется ширина ячейки.
    3. Размер шрифта, чтобы рассчитать коэффициент, увеличивающий или уменьшающий высоту ячейки в зависимости от его (шрифта) размера.

    Макрос VBA Excel для автоподбора высоты ячейки с учетом размера используемого шрифта:

    • myCell — отдельная ячейка в объединенной;
    • myLen — длина текста в активной ячейке;
    • myWidth — ширина объединенной ячейки;
    • k — коэффициент, вносящий поправку в зависимости от размера шрифта;
    • n — размер шрифта по умолчанию.*

    * Это не точное значение: у меня по умолчанию установлен шрифт Calibri размером 11, но точнее код работает с n = 10. Значение переменной n подбирается опытным путем, так как длина текста зависит от процентного соотношения широких и узких символов, если шрифт не моноширинный. Переменной n можно присваивать и дробные значения для более точного автоподбора высоты.

    Максимальная высота строки — 409,5. Если расчетная высота объединенной ячейки окажется больше, будет сгенерирована ошибка.

    Данный код VBA Excel работает с выделенной ячейкой. Вы можете задать список адресов объединенных ячеек и пройтись макросом по каждой из них.

    Обработка списка ячеек

    Укажите список объединенных ячеек в качестве аргументов функции Array. Для списка используйте адреса только первых ячеек из состава объединенных.

    • myCell — массив со списком адресов объединенных ячеек;
    • myElem — используется как элемент массива myCell.

    Макрос ObkhodYacheyek по адресам из списка обращается к каждой ячейке по очереди, выделяет ее и запускает код автоподбора высоты PodborVysoty.

    Если выделить диапазон объединенных ячеек по одной, удерживая клавишу Ctrl, то запустить код автоподбора высоты можно с помощью следующего макроса:

    12 комментариев для “VBA Excel. Автоподбор высоты объединенной ячейки”

    Здравствуйте, Евгений. А если сделать проверку каждой строки, ограничив по количеству строк и ячеек, сильно на производительности скажется? Или лучше прописывать
    myCell = Array(«A1», . «A2000») ?

    Добрый день, Алексей!
    Сравните время выполнения обоих вариантов вашего кода.

    Евгений, подскажите пожалуйста первый вариант, я думаю он длинный, да и я его не осилю.

    Да нет, он не длинный, но вряд ли вам подойдут оба варианта, так как замедляет код метод .Select . Я то рассчитывал, когда писал эти коды, на небольшое количество объединенных ячеек. Замерьте время выполнения у этого варианта и напишите, что получилось:

    Запускайте код не из редактора VBA, а кнопкой на рабочем листе или пользовательской форме, так он работает быстрее.

    Вводная: у меня документ разноплановый и большой (32 ячейки (ширину подгонял для формата А4) на 2000 строк), т.е. присутствуют строки объединённые в одну (текст многострочный и однострочный), есть таблицы (как однострочные в ячейке, так и многострочные и с картинками в строках и с вертикальным текстом). В основном в строках, это формулы эксель, но есть и просто текст.
    Отчёт по работе макроса. Засечь время не удалось, наблюдал работу макроса. Результат работы:
    1. не правит одинарную строку (на 32 ячейки) многострочный текст, как было до работы макроса, так и осталось;
    2. правит одинарную строку однострочный текст (местами отсутствует эта работа, необходимы ещё тесты, чтобы с уверенностью высказать);
    3. таблицу с однострочными текстами правит хорошо;
    4. в таблице с многострочными текстами есть нюансы, подгоняет ширину под первую ячейку, т.е. если во второй ячейке этой же строки есть более многострочный текст ширина строки определяется по первой ячейке и во второй содержание «съедается»;
    5. вертикальные тексты в ячейках, отсутствуют боковые отступы от грани таблицы до текста;
    6. если есть в документе пустая строка с ячейками не объединённая, макрос её (строку) ширину смещает в ноль;
    Имеются ещё мелкие огрехи, но тут надо ещё тестировать и пробовать.
    Много слов получилось и неутешительных. Если мой пост будет мешать вашей работе, можете его не публиковать. За правками макроса можно будет к вам обращаться?

    За небольшими правками можете обращаться. Вот одна из них:

    Это для того, чтобы не скрывались пустые строки.

    А по п.1 не правит одинарную строку (на 32 ячейки) многострочный текст, можно сделать правку? или это по другой теме?

    Я не совсем понял: многострочный текст в ячейке, объединенной из 32 ячеек?

    Описывал процесс и понял, надо проще. Открываем новый документ эксель и ячейку А1 объединяем с ячейкой В1 получим строку (объединённая ячейка А1). Вот в неё вставляем многострочный текст (с переносом слов). Если не менялись размеры стандартных ячеек, то в такую объединённую ячейку в одну строку можно напечатать 17 букв «а». 18 буква сместится её можно будет увидеть только, если расширишь строку. Вот и получается строка одна, а в ней многострочный текст.

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

    Привет.
    Я придумал метод, как подстроить высоту объединенной ячейки с длинным текстом с помощью AutoFit, который встроен в Excel.
    Идея заключается в том, чтобы на пустом (новом) листе завести обычную ячейку (формат естественно с переносом текста).
    Если в нее скопировать текст из исходной объединенной ячейки, то он автоматом разобъется на строки и высота этой конечной ячейки даст нам искомую высоту для такой же объединенной ячейки.
    Проблема в том, чтобы подобрать ширину одиночной ячейки такую, чтобы текст из объединенной ячейки «укладывался» в нее аналогичным образом. Ибо, как выяснилось в процессе эта ширина хоть и зависит линейно от ширины исходной ячейке, но не равна ей.
    Например.
    У меня есть объединенная ячейка, которая получилась объединением 62 одинаковых ячеек шириной 1.43 пункта.
    Шрифт Coliri, 11, обычный.
    «Ширина» объединенной ячейки получается 1.43 х 62 = 88.6
    Так вот для обычной ячейки этой ширины оказалось мало.
    Чтобы текст из исходной ячейки уложился в обычной в те же 5 строк, потребовалось задать ширину конечной ячейки 139.
    То есть при выборе ширины обычной конечной ячейки нужно применять коэффициент 1.55-1.56 (в моем случае).
    Возможно этот коэффициент постоянный, возможно зависит как он выбранного шрифта, так и от количества объединяемых ячеек и их исходной ширины и моноширинности (этот вопрос я не исследовал).
    Но в итоге метод работает.
    Я завожу обычную ячейку нужной ширины записываю в нее текст из исходной объединенной, текст автопереносится, и я получаю высоту для объединенной ячейки из свойств обычной.

    Существенное замечание.
    Формат ячейки для работы с длинным текстом должен быть «Общий» («General»).
    При записи же в ячейку с форматом «Текстовый» строки более 256 символов отображаются ############ и автофит не работает.
    Если формат Общий, то все работает и отображается как нужно.

    Источник

    VBA AutoFit (Rows, Column, or the Entire Worksheet)

    Key Points

    • In VBA, you can use the AutoFit method to auto-fit rows, columns, and even an entire worksheet.
    • You need to specify the range, and then you can use the AutoFit method.

    AutoFit a Column

    Let’s say you want to autofit column A, the code would be something like below:

    In the above line of code, you have used the EntireColumn property to refer to the entire column of cell A1.

    As you are within a worksheet so you can also use the columns property and write a code like the below.

    AutoFit a Row

    In the same way, you can write code to autofit a row. Let’s say you want to autofit row 5, the code would be:

    And if you want to use the row property, then you can use the code like the following.

    AutoFit UsedRange (Rows and Columns)

    Now let’s say, you only want to autofit those columns and rows where you have data. In VBA, there is a property called used range that you can use. So the code would be.

    And if you want to use a specific worksheet then the code would be.

    AutoFit Entire Worksheet

    And if you want to refer to all the columns and rows of the worksheet then you can use the “CELLS” property. Here’s the code.

    Or you can also use VBA’s WITH statement to write a code like the below.

    Источник

    В данном примере описаны макросы для автоматического форматирования или спроса формата для ячеек таблиц Excel средствами VBA.

    VBA-макрос: заливка, шрифт, линии границ, ширина столбцов и высота строк

    В процессе запыления данных сотрудниками отдела на некоторых листах были изменены форматы ячеек:

    запыления планов работ.

    Необходимо сбросить форматирование ячеек и сделать так чтобы на всех таблицах планов выполнения работ были одинаковые форматы отображения данных. Формат ячеек для исходной таблицы должен быть закреплен за шаблоном, чтобы можно было сделать сброс и применять заданный стиль оформления в дальнейшем.

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

    Макросы Excel прекрасно справляются с форматированием ячеек на рабочих листах. Кроме того, делают это быстро и в полностью автоматическом режиме. Воспользуемся этими преимуществами и для решения данной задачи напишем свой код VBA-макроса. Он поможет нам быстро и безопасно сбрасывать форматы на исходный предварительно заданный в шаблоне главной таблицы.

    Чтобы написать свой код макроса откройте специальный VBA-редактор в Excel: «РАЗРАБОТЧИК»-«Код»-«Visual Basic» или нажмите комбинацию клавиш ALT+F11:

    Код Visual Basic.

    В редакторе создайте новый модуль выбрав инструмент «Insert»-«Module» и введите в него такой VBA-код макроса:

    Sub SbrosFormat()
    If TypeName(Selection) <> "Range" Then Exit Sub
    With Selection
    .HorizontalAlignment = xlVAlignCenter
    .VerticalAlignment = xlVAlignCenter
    .WrapText = True
    .Borders.LineStyle = xlContinuous
    .Borders.Weight = xlThin
    .Font.ColorIndex = xlColorIndexAutomatic
    .Interior.ColorIndex = xlColorIndexAutomatic
    .Columns.AutoFit
    .Rows.AutoFit
    End With
    End Sub

    VBA-код макроса.

    Теперь если нам нужно сбросить форматирование таблицы на исходный формат отображения ее данных, выделите диапазон ячеек A1:E20 и запустите макрос: «РАЗРАБОЧТИК»-«Код»-«Макросы»-«SbrosFormat»-«Выполнить». Результат работы макроса изображен ниже на рисунке:

    сбросить форматирование таблицы на исходный формат.

    Таблица приобрела формат, который определен макросом. Таким образом код VBA нам позволяет сбросить любые изменения формата ячеек на предустановленный автором отчета.

    

    Описание VBA-макроса для формата ячеек таблицы Excel

    Первая инструкция в коде, проверяет выделены ли ячейки диапазоном. Если перед выполнением макроса выделил другой элемент листа, например, график, тогда макрос закрывается и дальнейшие инструкции выполняться не будут. В противные случаи будут форматироваться все выделенные ячейки по очереди в соответствии с определенными настройками форматирования:

    1. Текст в значениях ячеек выравнивается по центру горизонтально и вертикально.
    2. Включен построчный перенос текста.
    3. Все границы ячеек получают черную обычной толщины непрерывную линию с черным цветом.
    4. Сброс цвета шрифта на авто.
    5. Удаляется любая заливка ячеек.
    6. Ширина столбцов автоматически настраивается под текст в ячейках.
    7. Автоматически настроить высоту строк по содержимому ячеек.

    Модификация исходного кода макроса для форматирования

    Если необходимо сделать так чтобы текст выравнивался не по центру относительно горизонтали, а по правую сторону ячейки, тогда измените константу xlHAlignCenter на xlHAlignRight. Она находиться в свойстве .HorizontalAlignment. Сделайте это следующим образом:

    .HorizontalAlignment = xlHAlignRight.

    Таким же образом можно выровнять текст по левую сторону изменив значение константы на xlHAlignLeft. Или можно выровнять положение текста по ширине ячейки используя константу xlHAlignJustify.

    Чтобы макрос выравнивал текст в ячейках по вертикали к низу, измените строку кода, отвечающую за данную настройку форматирования. Измените константу, которая присваивается к свойству VerticalAlignment в следующий способ:

    Если хотите выровнять текс к верху ячейки, тогда воспользуйтесь константой xlHAlignTop.

    Если нужно применить для границ ячеек толстую и пунктирную линию в синем цвете, смодифицируйте инструкцию, отвечающую за формат линий:

    .Borders.LineStyle = xlDash

    .Borders.Color = vbBlue

    .Borders.Weight = xlMedium

    Описание настройки форматирования для линий границ ячеек. Мы будем получать разные дополнительные типы линий границ если для свойства LineStyle присваивать такие константы:

    • xlDoshDot – применяется для рисования пунктирных линий в границах ячеек;
    • xlDouble – рисует двойную линию;
    • xlHairLine – рисует тонкую линию;
    • xlThick – для рисования очень толстой линии.

    Для настройки цвета линий Excel предлагает всего 8 констант для определенных цветов. Константы для настройки цвета линий границ для свойства Color:

    • vbBlack – черный;
    • vbWhite – белый;
    • vbRed – красный;
    • vbGreen –зеленый;
    • vbBlue – синий;
    • vbYellow – желтый;
    • vbMagenta – алый;
    • vbCyan – голубой.

    Но при необходимости присвоить линиям границ другие цвета можно вместо константы для свойства Color записать функцию RGB(). Достаточно лишь в аргументе этой функции указать код цвета по шкале от 0 и до 255.

    Если нужно применить толстую линию только для границ выделенного диапазона, тогда перед инструкцией End With добавьте следующую строку кода:

    .BorderAround xlContinuous, xlMedium, vbBlack

    Описание: В первом аргументе для метода BorderAround можно записать также другой стиль линии. Во втором – толщину линии, а в третьем – цвет. Константы, которые можно присвоить в качестве значений для этих аргументов можно использовать те же, которые мы использовали для свойств: LineStyle, Weight, Color.

    Если нужно экспонировать первую строку для выделенного диапазона с помощью жирного и курсивного шрифта значений ячеек. А также заполнить ячейки первой строки заливкой с голубым цветом, тогда в самом конце кода макроса перед последней инструкцией End Sub следует добавить несколько строк с VBA-кодом:

    .Rows(1).Font.Bold = True

    .Rows(1).Font.Italic = True

    .Rows(1).Interior.Color = vbCyan

    Если хотите присвоить такой же формат для не только для первой строки, но и для первого столбца выделенного диапазона, тогда скопируйте и вставьте ниже эти 3 строчки кода. После в последних трех строках измените свойство Rows на Columns.

    .Columns (1).Font.Bold = True

    .Columns (1).Font.Italic = True

    .Columns (1).Interior.Color = vbCyan

    Если нужно задать особенный формат для экспонирования последней строки выделенного диапазона, тогда измените число 1 в аргументе свойства Rows на число всех выделенных строк .Rows.Count. Например, добавьте в конец кода еще такую строку:

    .Rows(.Rows.Count).Font.Bold = True

    Полная версия модифицированного кода макроса выглядит так:

    Sub SbrosFormat()
    If TypeName(Selection) <> "Range" Then Exit Sub
    With Selection
    .HorizontalAlignment = xlVAlignCenter
    .VerticalAlignment = xlVAlignCenter
    .WrapText = True
    .Borders.LineStyle = xlDash
    .Borders.Color = vbBlue
    .Borders.Weight = xlMedium
    .Font.ColorIndex = xlColorIndexAutomatic
    .Interior.ColorIndex = xlColorIndexAutomatic
    .Columns.AutoFit
    .Rows.AutoFit
    .BorderAround xlContinuous, xlMedium, vbBlack
    .Rows(1).Font.Bold = True
    .Rows(1).Font.Italic = True
    .Rows(1).Interior.Color = vbCyan
    .Columns(1).Font.Bold = True
    .Columns(1).Font.Italic = True
    .Columns(1).Interior.Color = vbCyan
    .Rows(.Rows.Count).Font.Bold = True
    End With
    End Sub

    Пример работы измененного кода VBA-макроса:

    Пример после изменений в коде.

    В данном примере вы ознакомились с базовыми возможностями форматирования с помощью VBA-макросов. Уверен, что теперь вы сможете самостоятельно найти практическое применение этим исходным кодам.

    0 / 0 / 0

    Регистрация: 17.01.2020

    Сообщений: 7

    1

    Изменение высоты строки по условию

    08.10.2021, 11:02. Показов 1671. Ответов 11


    Студворк — интернет-сервис помощи студентам

    Добрый день.

    Подскажите, пожалуйста, можно ли как-то (с помощью макроса или еще как) менять значение высоты строки ячейки (в единицах измерения пт) по вычисленному значению этой высоты (значение находится в ячейке) ?

    Покажу на примере что мне нужно:
    Имеется таблица, в которой по макросу были вычислены высоты строк в необходимых excel единицах измерения (столбец K во вложенном файле). Например, было вычислено, что высота строки 6 равна 37,5 пт. Мне нужно установить высоту этой строки 40 пт.

    Можно ли это как-то автоматизировать, чтоб не устанавливать высоту в каждой строчке вручную?



    0



    Narimanych

    2630 / 1636 / 744

    Регистрация: 23.03.2015

    Сообщений: 5,142

    08.10.2021, 11:12

    2

    Maidar,

    Цитата
    Сообщение от Maidar
    Посмотреть сообщение

    с помощью макроса

    Цитата
    Сообщение от Maidar
    Посмотреть сообщение

    то высота строки 6 равна 37,5 пт. Мне нужно установить высоту этой строки 40 пт.

    Visual Basic
    1
    2
    3
    
    Sub MMM()
    Rows(6).RowHeight = 40
    End Sub



    0



    ᴁ®

    Эксперт MS Access

    3070 / 1736 / 361

    Регистрация: 13.12.2016

    Сообщений: 5,938

    Записей в блоге: 4

    08.10.2021, 11:20

    3

    Лучший ответ Сообщение было отмечено Maidar как решение

    Решение

    можно макросом

    Миниатюры

    Изменение высоты строки по условию
     



    1



    0 / 0 / 0

    Регистрация: 17.01.2020

    Сообщений: 7

    08.10.2021, 11:45

     [ТС]

    4

    Narimanych,
    Надо полагать, Ваш макрос отработает только для 6 строки и только для значения 40.
    Мне нужно немного иное — выставить значения высот в определенном столбце для всех ячеек в рассматриваемой таблице, и после автоматически применить эти значения к высотам строк. Строку 6 и значение 40 я привел для примера.

    Цитата
    Сообщение от АЕ
    Посмотреть сообщение

    можно макросом

    Возможно, я чего-то не понимаю. Попробовал Ваш макрос, эксель выдает ошибку и выделяет (x1Up)



    0



    ᴁ®

    Эксперт MS Access

    3070 / 1736 / 361

    Регистрация: 13.12.2016

    Сообщений: 5,938

    Записей в блоге: 4

    08.10.2021, 12:28

    5

    Цитата
    Сообщение от Maidar
    Посмотреть сообщение

    Возможно, я чего-то не понимаю.

    тогда найдите другой способ найти последнюю заполненную строку в 11 столбце или явно укажите 20 или 30 (сколько там строк)



    1



    0 / 0 / 0

    Регистрация: 17.01.2020

    Сообщений: 7

    08.10.2021, 12:35

     [ТС]

    6

    Цитата
    Сообщение от АЕ
    Посмотреть сообщение

    тогда найдите другой способ найти последнюю заполненную строку в 11 столбце или явно укажите 20 или 30 (сколько там строк)

    Простите за глупый вопрос. Куда именно нужно прописать количество строк?
    lr = 20 ?

    Изменено:

    Разобрался. Спасибо!



    0



    ᴁ®

    Эксперт MS Access

    3070 / 1736 / 361

    Регистрация: 13.12.2016

    Сообщений: 5,938

    Записей в блоге: 4

    08.10.2021, 12:36

    7

    а лучше писать без ошибок. С картинки оно так….

    Цитата
    Сообщение от Maidar
    Посмотреть сообщение

    lr = 20 ?

    да



    1



    2630 / 1636 / 744

    Регистрация: 23.03.2015

    Сообщений: 5,142

    08.10.2021, 17:07

    8

    Цитата
    Сообщение от Maidar
    Посмотреть сообщение

    Narimanych,
    Надо полагать, Ваш макрос отработает только для 6 строки и только для значения 40.
    Мне нужно немного иное

    Цитата
    Сообщение от Maidar
    Посмотреть сообщение

    Например, было вычислено, что высота строки 6 равна 37,5 пт. Мне нужно установить высоту этой строки 40 пт.

    Цитата
    Сообщение от Maidar
    Посмотреть сообщение

    Мне нужно немного иное — выставить значения высот в определенном столбце для всех ячеек в рассматриваемой таблице

    Почему бы в начале не написать это совсем другое?

    Пы.Сы Научитесь ставить правильно вопросы!



    0



    Dinoxromniy

    1234 / 671 / 239

    Регистрация: 22.12.2015

    Сообщений: 2,092

    08.10.2021, 17:27

    9

    Цитата
    Сообщение от Maidar
    Посмотреть сообщение

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

    выделите свой определенный столбец для всех ячеек, чтобы эти слова ни значили, затем запустите код ниже, он установит для каждой строки значение высоты, равное значению ячейки (или нескольких по очереди, если выделите по горизонтали) из этой строки. Ячейки можно выделить контролом из нескольких несвязанных диапазонов.

    Visual Basic
    1
    2
    3
    4
    5
    6
    7
    8
    
    Sub row_h()
    Dim rngCell As Range
    For Each rngCell In Selection
        If rngCell.Value > 0 Then
            rngCell.EntireRow.RowHeight = rngCell.Value
        End If
    Next rngCell
    End Sub

    Не по теме:

    Цитата
    Сообщение от Narimanych
    Посмотреть сообщение

    Почему бы в начале не написать это совсем другое?

    Подпишусь под каждым словом :D



    0



    Fairuza

    08.10.2021, 18:29

    Не по теме:

    Цитата
    Сообщение от Narimanych
    Посмотреть сообщение

    Пы.Сы Научитесь ставить правильно вопросы!

    скоро все будем копировать подпись АЕ



    0



    Dinoxromniy

    08.10.2021, 18:49

    Не по теме:

    Цитата
    Сообщение от Fairuza
    Посмотреть сообщение

    скоро все будем копировать подпись АЕ

    Сие вряд ли — у меня как минимум отключено отображение подписей участников.



    0



    344 / 206 / 78

    Регистрация: 16.07.2020

    Сообщений: 589

    08.10.2021, 19:42

    12

    Цитата
    Сообщение от Maidar
    Посмотреть сообщение

    Возможно, я чего-то не понимаю. Попробовал Ваш макрос, эксель выдает ошибку и выделяет (x1Up)

    После «x» должна быть латинская буква «l» (эль), а не единица «1».



    0



    Понравилась статья? Поделить с друзьями:
  • Высота строк в excel горячие клавиши
  • Высота строк в excel 2016
  • Высота строк excel как изменить
  • Высота страницы в excel
  • Выровнять все строки в word