Vba excel ориентация текста

In this article I will explain how you can change the orientation of the content in cells. I have also provided several sample codes.

Jump To:

  • Example 1, Basics
  • Example 2, Set Orientation
  • Example 3, Get Orientation

You can download the file and code related to this article here.


Example 1, Basics:

The following code applies a 28 deg orientation to the contents of cell A1:

Range("A1").Orientation = 28

Before:

VBA Excel, Orientation, Alignment Before

Result:

Orientation,  Excel VBA


Example 2, Set Orientation:

In this example in row 1 the user selects the orientation to apply to the content of the cells in row 2:

Before:

VBA Excel, Orientation Before
After:

VBA Excel, Orientation After
The program uses a worksheet_change event handler. The event handler executes when the user makes changes to the worksheet:

'executes when the user makes changes to the worksheet
Private Sub worksheet_Change(ByVal target As Range)
Dim i As Integer
For i = 1 To 6
    'loops through all the columns
    Range(Cells(2, i), Cells(2, i)).Orientation = Cells(1, i)
Next i
End Sub


Example 3, Get Orientation:

In this example the user selects a lower and upper bound for the orientation. The program checks the orientation of the content in row 2. If the orientation falls between the upper and lower bounds selected by the user the cell in the next row is colored green:

Excel VBA, Get Orientation
By reducing the lower bound more cells will be colored green:

Excel VBA, Get Orientation, Lower bound modified
By increasing the upper bound more cells will be colored green:

Excel VBA, Get Orientation, Upper bound modified
The program uses a worksheet_change event handler. The event handler executes when the user makes changes to the worksheet:

'executes when the user makes changes to the worksheet
Private Sub worksheet_Change(ByVal target As Range)
Dim i As Integer
For i = 1 To 6
    'checks if the orientation of the content in the cell under
    'consideration is between the upper and lower bounds selected by
    'the user
    If (Range(Cells(2, i), Cells(2, i)).Orientation <= Cells(1, 4)) _
    And (Range(Cells(2, i), Cells(2, i)).Orientation >= Cells(1, 2)) Then
        Range(Cells(3, i), Cells(3, i)).Interior.Color = 3394611
    Else
        Range(Cells(3, i), Cells(3, i)).Interior.Pattern = xlNone
    End If
Next i
End Sub

The line below colors the cell green. The number 3394611 is a color code. This was obtained using the macro recorder. For more information about about the macro recorder please see Excel VBA Formatting Cells and Ranges Using the Macro Recorder:

 Range(Cells(3, i), Cells(3, i)).Interior.Color = 3394611

The line below removes any fill color previously assigned to the cell:

Range(Cells(3, i), Cells(3, i)).Interior.Pattern = xlNone

You can download the file and code related to this article here.

See also:

  • VBA Excel, Alignment

If you need assistance with your code, or you are looking for a VBA programmer to hire feel free to contact me. Also please visit my website  www.software-solutions-online.com

title keywords f1_keywords ms.prod api_name ms.assetid ms.date ms.localizationpriority

CellFormat.Orientation property (Excel)

vbaxl10.chm676082

vbaxl10.chm676082

excel

Excel.CellFormat.Orientation

fd65a0f3-9870-2885-8bc3-85fc084082e6

04/16/2019

medium

CellFormat.Orientation property (Excel)

Returns or sets a Variant value that represents the text orientation.

Syntax

expression.Orientation

expression A variable that represents a CellFormat object.

Remarks

The value of this property can be set to an integer value from -90 to 90 degrees or to one of the XlOrientation constants.

[!includeSupport and feedback]

Выравнивание текста и других значений в ячейке по горизонтали и вертикали из кода VBA Excel. Свойства HorizontalAlignment и VerticalAlignment. Примеры.

Выравнивание по горизонтали

Для выравнивания текста в ячейках рабочего листа по горизонтали в VBA Excel используется свойство HorizontalAlignment объекта Range. Оно может принимать следующие значения:

Выравнивание Константа Значение
По левому краю xlLeft -4131
По центру xlCenter -4108
По правому краю xlRight -4152
Равномерно по ширине xlJustify -4130
По умолчанию xlGeneral 1

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

Пример 1
Заполним три первые ячейки листа Excel текстом, соответствующим предполагаемому выравниванию. Затем применим к ним выравнивание по горизонтали, а в ячейках ниже выведем соответствующие значения констант.

Sub Primer1()

‘Заполняем ячейки текстом

   Range(«A1») = «Левая сторона»

   Range(«B1») = «Центр ячейки»

   Range(«C1») = «Правая сторона»

‘Применяем горизонтальное выравнивание

   Range(«A1»).HorizontalAlignment = xlLeft

   Range(«B1»).HorizontalAlignment = xlCenter

   Range(«C1»).HorizontalAlignment = xlRight

‘Выводим значения констант

   Range(«A2») = «xlLeft  =  « & xlLeft

   Range(«B2») = «xlCenter  =  « & xlCenter

   Range(«C2») = «xlRight  =  « & xlRight

End Sub

Выравнивание по вертикали

Для выравнивания текста в ячейках рабочего листа по вертикали в VBA Excel используется свойство VerticalAlignment объекта Range. Оно может принимать следующие значения:

Выравнивание Константа Значение
По верхнему краю xlTop -4160
По центру xlCenter -4108
По нижнему краю xlBottom -4107
Равномерно по высоте xlJustify -4130

Точно так же, как и по горизонтали, при выравнивании по вертикали свойству VerticalAlignment можно присваивать как значение в виде константы, так и непосредственно ее числовое значение.

Пример 2
Заполним три первые ячейки третьей строки листа Excel текстом, соответствующим предполагаемому выравниванию. Затем применим к ним выравнивание по вертикали, а в ячейках ниже выведем соответствующие значения констант.

Sub Primer2()

‘Заполняем ячейки текстом

   Range(«A3») = «Верх»

   Range(«B3») = «Центр»

   Range(«C3») = «Низ»

‘Применяем вертикальное выравнивание

   Range(«A3»).VerticalAlignment = xlTop

   Range(«B3»).VerticalAlignment = xlCenter

   Range(«C3»).VerticalAlignment = xlBottom

‘Выводим значения констант

   Range(«A4») = «xlTop  =  « & xlTop

   Range(«B4») = «xlCenter  =  « & xlCenter

   Range(«C4») = «xlBottom  =  « & xlBottom

End Sub

Двойное выравнивание

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

Пример 3
Записываем в ячейки диапазона «A1:C4» текст «Всё по центру», применяем горизонтальное и вертикальное выравнивание по центру для всего диапазона.

Sub Primer3()

   With Range(«A1:C4»)

      .Value = «Всё по центру»

      .HorizontalAlignment = 4108

      .VerticalAlignment = xlCenter

   End With

End Sub

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


Twony

0 / 0 / 0

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

Сообщений: 4

1

Excel

Макрос ориентации текста

25.02.2019, 15:55. Показов 2890. Ответов 7

Метки нет (Все метки)


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

Добрый день!
есть такой макрос

Visual Basic
1
2
3
4
5
6
7
8
Sub InsertRow()
Dim i As Long, rCell As Range
    For Each rCell In Selection
        If rCell <> "" Then
            If rCell.Offset(1, 0) <> rCell Then rCell.Offset(1, 0).EntireRow.Insert
        End If
    Next
End Sub

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

СПАСИБО ЗА ВНИМАНИЕ



0



pashulka

4131 / 2235 / 940

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

Сообщений: 4,624

25.02.2019, 16:19

2

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

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Test()
    Application.ScreenUpdating = False
    Dim c As Range
    For Each c In Range("A1", Cells(Rows.Count, "A").End(xlUp))
        If c <> c(2) Then
           Select Case c.HorizontalAlignment
               Case xlGeneral, xlLeft: c.HorizontalAlignment = xlRight
               Case xlRight: c.HorizontalAlignment = xlLeft
           End Select
        End If
    Next
    Application.ScreenUpdating = True
End Sub



0



0 / 0 / 0

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

Сообщений: 4

26.02.2019, 08:52

 [ТС]

3

Спасибо, проверил. Почти получилось)
Я прикрепил три изображения ниже
1 Исходное
2 Как делает макрос
3 Как хотелось бы)



0



4131 / 2235 / 940

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

Сообщений: 4,624

26.02.2019, 08:57

4

Twony, Если что, то для работы нужна не картинка, а файл (.xls*)



0



0 / 0 / 0

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

Сообщений: 4

26.02.2019, 09:00

 [ТС]

5

пардоньте)



0



pashulka

4131 / 2235 / 940

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

Сообщений: 4,624

26.02.2019, 09:34

6

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

Решение

На основании файла :

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Test2()
    Application.ScreenUpdating = False
    Dim c As Range, o&
    o = Range("B11").HorizontalAlignment
    For Each c In Range("B12", Cells(Rows.Count, "B").End(xlUp))
        If c <> c(0) Then
           Select Case o
               Case xlGeneral, xlLeft: o = xlRight
               Case xlRight: o = xlLeft
           End Select
        End If
        c.HorizontalAlignment = o
    Next
    Application.ScreenUpdating = True
End Sub



1



Vlad999

3827 / 2254 / 751

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

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

26.02.2019, 09:47

7

такой подход

Visual Basic
1
2
3
4
5
6
7
8
9
10
Application.ScreenUpdating = False
    Dim c As Range
    n = xlRight
    For i = 11 To Cells(Rows.Count, "B").End(xlUp).Row
        If Cells(i, 2) <> Cells(i - 1, 2) Then
            n = IIf(n = xlRight, xlLeft, xlRight)
        End If
        Cells(i, 2).HorizontalAlignment = n
    Next
    Application.ScreenUpdating = True



1



0 / 0 / 0

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

Сообщений: 4

27.02.2019, 07:21

 [ТС]

8

Спасибо ребята!
Всё работает!!!



0




Форум программистов Vingrad

Новости ·
Фриланс ·
FAQ

Правила ·
Помощь ·
Рейтинг ·
Избранное ·
Поиск ·
Участники

Форум -> Компьютерные системы -> MS Office, Open Office и др. -> Программирование, связанное с MS Office
(еще)

Модераторы: mihanik

Поиск:

Ответ в темуСоздание новой темы
Создание опроса
> Как изменить направление текта в Excel 

:(

   

Опции темы

Jonnik
Дата 14.12.2007, 10:03 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Шустрый
*

Профиль
Группа: Участник
Сообщений: 90
Регистрация: 9.2.2006

Репутация: нет
Всего: нет

Как програмно через VBA изменить направление текста в Excel с горизонтального на вертикальный?
Желательно с примерчиком кода.

PM MAIL   Вверх
Genyaa
Дата 14.12.2007, 10:40 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Усердный
*

Профиль
Группа: Участник
Сообщений: 154
Регистрация: 25.9.2006
Где: Москва

Репутация: 2
Всего: 11

А как на счет того, чтобы записать макрорекордером это действие и посмотреть полученный код?

———————

Всякое решение плодит новые проблемы.

PM WWW   Вверх
Jonnik
Дата 14.12.2007, 12:57 (ссылка)
| (нет голосов)
Загрузка ... Загрузка …




Быстрая цитата

Цитата

Шустрый
*

Профиль
Группа: Участник
Сообщений: 90
Регистрация: 9.2.2006

Репутация: нет
Всего: нет

Типа такого

Код

Range("G4").Select
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = -90
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With

PM MAIL   Вверх



















Ответ в темуСоздание новой темы
Создание опроса
Правила форума «Программирование, связанное с MS Office»

mihanik

staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми
компонентами


  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль «Помогите!» таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в

    «Книге отзывов о работе администрации»

  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!

С уважением
mihanik и
staruha.

 

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »

Подписаться на тему |
Подписка на этот форум |
Скачать/Распечатать тему

[ Время генерации скрипта: 0.0898 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]

Реклама на сайте
   
Информационное спонсорство

Like this post? Please share to your friends:
  • Vba excel округлить до сотых
  • Vba excel округление до целого в большую сторону
  • Vba excel округление до двух знаков
  • Vba excel округление в меньшую сторону
  • Vba excel окрашивание ячейки