Выравнивание ячеек в vba excel

Обновлено: 20.11.2024

Excel VBA, установка свойств выравнивания ячеек (пример кода + загрузка)

В этой статье я предоставил пример кода, который устанавливает свойства выравнивания ячеек в первой строке с помощью VBA. Пользователь выбирает различные свойства выравнивания, используя раскрывающиеся списки. Затем программа обновляет свойства выравнивания ячеек в строке 1. На рисунке ниже ячейки в строке 1 имеют свойства выравнивания по умолчанию:

Используя раскрывающиеся списки, если можно изменить выравнивание по горизонтали:

Используя раскрывающийся список в строке 3, можно изменить вертикальное выравнивание:

Введя значения в строку 4, можно изменить ориентацию текста:

Раскрывающиеся списки в строке 5 можно использовать для изменения свойства переноса текста:

Раскрывающиеся списки в строке 6 можно использовать для изменения свойства сжатия по размеру:

Раскрывающиеся списки в строке 7 можно использовать для изменения свойства порядка чтения:

Раскрывающиеся списки создаются с помощью проверки данных. Дополнительные сведения о создании раскрывающихся списков в Excel см. в разделе Раскрывающиеся списки Excel VBA. Значения для раскрывающихся списков хранятся в листе2:

В программе есть обработчик событий Worksheet_Change, который выполняется, когда пользователь выбирает значение из раскрывающихся списков:

'выполняется, когда пользователь вносит изменения в рабочий лист
Private Sub Worksheet_Change(ByVal target As Range)
Dim i As Integer
For i = 1 To 3
'set горизонтальное выравнивание
Вызов setHRAL(i + 1)
'установить вертикальное выравнивание
Вызов setVRAL(i + 1)
'установить ориентацию
Вызов SetOR(i + 1)
'установить перенос текста
Вызов SetWrapText(i + 1)
'установить сжатие по размеру
Вызвать SetShrink2Fit(i + 1)
'установить порядок чтения
>Вызвать SetReadOrder(i + 1)
Следующий i
End Sub

Функция setHRAl() устанавливает горизонтальное выравнивание ячеек. Дополнительные сведения о работе со свойством горизонтального выравнивания в VBA см. в разделе Горизонтальное выравнивание Excel VBA:

'устанавливает выравнивание по горизонтали
Private Sub setHRAL( ByVal intColumn As Integer)
'General
If Cells(2, intColumn) = "General" Then
Range(Cells (1, intColumn), Cells(1, _
intColumn)).HorizontalAlignment = xlGeneral
'Left
ElseIf Cells(2, intColumn) = "Left" Then
Range( Cells(1, intColumn), Cells(1, _
intColumn)).HorizontalAlignment = xlLeft
'Center
ElseIf Cells(2, intColumn) = "Center" Then
Range (Cells(1, intColumn), Cells(1, _
intColumn)).HorizontalAlignment = xlCenter
'Right
ElseIf Cells(2, intColumn) = "Right" Then
Range(Cells(1, intColumn), Cells(1, _
intColumn)).HorizontalAlignment = xlRight
'Fill
ElseIf Cells(2, intColumn) = "Fill" Then
Range(Cells(1, intColumn), Cells(1, _
intColumn)).HorizontalAlignment = xlFill
'Justify
ElseIf Cells(2, intColumn) = "Justify" Then
Диапазон(Ячейки(1, intColumn), Ячейки(1, _
intColumn)).HorizontalAlignment = xlJustify
'Distributed
ElseIf Cells(2, intColumn) = "Distributed" Then
Range(Cells(1, intColumn), Cells(1, _
intColumn)) .HorizontalAlignment = xlDistributed
End If

End Sub

Функция setVRAL() устанавливает вертикальное выравнивание ячеек. Дополнительные сведения о работе со свойством вертикального выравнивания в VBA см. в разделе Вертикальное выравнивание Excel VBA:

'устанавливает вертикальное выравнивание
Private Sub setVRAL( ByVal intColumn As Integer)
'Top
If Cells(3, intColumn) = "Top" Then
Range(Cells (1, intColumn), Cells(1, _
intColumn)).VerticalAlignment = xlTop
'Center
ElseIf Cells(3, intColumn) = "Center" Then
Range( Cells(1, intColumn), Cells(1, _
intColumn)).VerticalAlignment = xlCenter
'Bottom
ElseIf Cells(3, intColumn) = "Bottom" Then
Range (Cells(1, intColumn), Cells(1, _
intColumn)).VerticalAlignment = xlBottom
'Justify
ElseIf Cells(3, intColumn) = "Justify" Then
Range(Cells(1, intColumn), Cells(1, _
intColumn)).VerticalAlignment = xlJustify
'Distributed
ElseIf Cells(3, intColumn) = "Distributed" Then
Range(Cells(1, intColumn), Cells(1, _
intColumn)).VerticalAlignment = xlDistributed
End If

End Sub

Функция setOR() устанавливает ориентацию текста. Дополнительные сведения о работе со свойством ориентации текста в VBA см. в разделе Ориентация Excel VBA (выравнивание):


'устанавливает ориентацию
Private Sub SetOR( ByVal intColumn As Integer)
Range(Cells(1, intColumn), Cells(1, _
intColumn)). Orientation = Cells(4, intColumn)
End Sub

Функция setWrapText() устанавливает свойство переноса текста. Дополнительные сведения о работе со свойством переноса текста в VBA см. в разделе Включение/выключение переноса текста в Excel VBA:

'устанавливает свойство переноса текста
Private Sub SetWrapText( ByVal intColumn As Integer)
If Cells(5, intColumn) = True Then
Range(Cells(1, intColumn), Cells (1, _
intColumn)).WrapText = True
Else
Range(Cells(1, intColumn), Cells(1, _
intColumn)).WrapText = False < br />End If
End Sub

Функция setShrink2Fit() устанавливает свойство сжатия по размеру. Для получения дополнительной информации о работе со свойством сжатия до подгонки в VBA см. раздел Включение/выключение сжатия в Excel VBA до подгонки:

'устанавливает свойство сжатия по размеру
Private Sub SetShrink2Fit( ByVal intColumn As Integer)
If Cells(6, intColumn) = True Then
Range(Cells(1, intColumn), Cells(1, _
intColumn)).ShrinkToFit = True
Else
Range(Cells(1, intColumn), Cells(1, _
intColumn)).ShrinkToFit = False
Конец, если
Конец подписки

Функция setReadingOrder() устанавливает свойство порядка чтения. Дополнительные сведения о работе со свойством порядка чтения в VBA см. в разделе Порядок чтения Excel VBA:

'устанавливает свойство порядка чтения
Private Sub SetReadOrder( ByVal intColumn As Integer)
If Cells(7, intColumn) = "Left to Right" Then
Range(Cells(1, intColumn), Cells(1, _
intColumn)).ReadingOrder = xlLTR
ElseIf Cells(7, intColumn) = "Справа налево" Then
Range(Cells(1, intColumn), Cells(1, _
intColumn)).ReadingOrder = xlRTL
Else
Range(Cells(1, intColumn), Cells(1, _
intColumn)).ReadingOrder = xlContext
Конец, если
Конец подписки

Excel VBA, установка горизонтального выравнивания (пример кода)

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

Вы можете скачать файл и код, относящиеся к этой статье, здесь.


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


Выпадающие списки создаются с использованием проверки данных. Список элементов для заполнения раскрывающегося списка находится на листе2:

Дополнительную информацию о создании раскрывающихся списков в Excel см. в разделе Раскрывающиеся списки Excel VBA.

В программе используется обработчик событий worksheet_change(), который выполняется, когда пользователь выбирает новые значения из раскрывающихся списков:

'срабатывает, когда в рабочий лист вносятся изменения
Private Sub Worksheet_Change( ByVal Target As Range)
Dim i As Integer
For i = 1 To 13
' проходит через все строки
Call ChangeFormat(Cells(i, 1), i)
Следующая i
End Sub

Функция ChangeFormat() получает параметры в качестве входных данных:

  1. strCommand: применяемое форматирование: «Слева», «Справа», «По центру»,…
  2. intRow : строка, к которой применяются изменения.

'Изменяет горизонтальное выравнивание ячейки в столбце B и строке, заданной
'входным параметром intRow
Private Sub ChangeFormat( ByVal strCommand As String, ByVal intRow As Integer)
' применить выравнивание по центру
If strCommand = "Center" Then
Range(Cells(intRow, 2), Cells(intRow, 2)).HorizontalAlignment = xlCenter
'применить выравнивание по левому краю
ElseIf strCommand = "Left" Then
Range(Cells(intRow, 2), Cells(intRow, 2)).HorizontalAlignment = xlLeft
'применить выравнивание по правому краю
ElseIf strCommand = "Right" Then
Range(Cells(intRow, 2), Cells(intRow, 2)).HorizontalAlignment = xlRight
'применить выравнивание заливки
ElseIf strCommand = "Fill" Then
Range(Cells (intRow, 2), Cells(intRow, 2)).HorizontalAlignment = xlFill
'применить выравнивание по ширине
ElseIf strCommand = "Justify" Then
Range(Cells(intRow, 2), Cells (intRow, 2)).HorizontalAlignment = xlJustify
'применить центр через выравнивание выделения
ElseIf strCommand = "Центрировать по выделенному" Затем
Range(Cells(intRow, 2), Cells(intRow, 5)).Select
Selection.HorizontalAlignment = xlCenterAcrossSelection
'применить распределенное выравнивание
ElseIf strCommand = "Distributed" Then
Range(Cells(intRow, 2), Cells(intRow, 2)).HorizontalAlignment _
= xlDistributed
'применить общее выравнивание
ElseIf strCommand = "Общие" Затем
Диапазон(Ячейки(intRow, 2), Ячейки(intRow, 2)).HorizontalAlignment = xlGeneral
End If
End Sub


Вы можете скачать файл и код, относящиеся к этой статье, здесь.

В VBA есть метод MERGE, который можно использовать для объединения диапазона ячеек или даже нескольких диапазонов в один. Этот метод имеет необязательный аргумент «Across». Если вы укажете TRUE, каждая строка в диапазоне будет объединена отдельно, а если вы укажете FALSE, будет объединен весь диапазон как один.

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

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

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

Точно так же вы можете ссылаться на книгу, указав имя книги.

Объединить диапазон и выровнять содержимое ячейки

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

Объединить текст, а затем объединить

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

Я пробовал кое-что, но не могу понять.

ваша помощь будет очень признательна

У меня есть следующий код

я хочу выделить столбцы A:W и центрировать текст

Факты об Excel

Льюи

Известный участник

Большая обезьяна

Активный участник

СтивO59L

Известный участник

Арктический воин

Активный участник

Арктический воин

Активный участник

подозревал, благодаря Lewiy & Big Monkey

Арктический воин

Активный участник

извините за беспокойство, но есть ли способ включить автофильтр?

например, вручную я выделю строку 1, затем данные>Фильтр>Автофильтр

вейселемре

Обычная доска

Арктический воин

Активный участник

Я никогда раньше не использовал массивы, но это сильно укорачивает :D

немного изменено в соответствии с порядком

вейселемре

Обычная доска

Excel содержит более 450 функций, и с каждым годом их становится все больше. Это огромная цифра, так с чего же начать? Прямо здесь, с этим набором.

Статистика форума

Поделиться этой страницей

Мы обнаружили, что вы используете блокировщик рекламы.

Какой блокировщик рекламы вы используете?

Отключить AdBlock

Следуйте этим простым шагам, чтобы отключить AdBlock

1)Нажмите значок на панели инструментов браузера.
2)Нажмите значок на панели инструментов браузера.
2)Нажмите кнопку «Приостановить на этом сайте».

Отключить AdBlock Plus

Следуйте этим простым шагам, чтобы отключить AdBlock Plus

1)Нажмите значок на панели инструментов браузера.
2)Нажмите на переключатель, чтобы отключить его для «mrexcel.com».

Отключить источник uBlock

Следуйте этим простым шагам, чтобы отключить uBlock Origin

1)Нажмите значок на панели инструментов браузера.
2)Нажмите кнопку "Питание".
3)Нажмите кнопку "Обновить".

Отключить uBlock

Следуйте этим простым шагам, чтобы отключить uBlock

1)Нажмите значок на панели инструментов браузера.
2)Нажмите кнопку "Питание".
3)Нажмите кнопку "Обновить".

Читайте также: