Форматирование таблицы

1. В блоке ячеек A2 : F2

- На вкладке выравнивание окна формат ячеек устанавливаем перенос текста по словам;

- значения данных выравниваем по центру по горизонтали и по верхнему краю по вертикали;

- устанавливаем шрифт “полужирный”,

2. Устанавливаем в столбцах A, B, C, E, F такую ширину столбцов, чтобы шапка таблицы была такой же, как показано на образце (рис. 8).

3. Выделяем блок ячеек A1:F1 и объединяем их, располагая информацию в центре. Устанавливаем в объединенной ячейке шрифт Arial Cyr, размер кегля 14, жирный, горизонтальное выравнивание – по центру, вертикальное – по нижнему краю.

4. Внутренние и внешние границы ячеек разделяем тонкими линиями, текст с данными таблицы сверху и снизу отделяем двойными тонкими линиями, объединяем ячейки A11:E11, информацию в объединенной ячейке выравниваем по правому краю.

5. Выделяем диапазоны ячеек A3:A10 и E3:E10 устанавливаем для них формат ячеек Числовой с количеством десятичных знаков, равным 0.

6. Выделяем диапазоны ячеек D3:D10 и F3:F11, и устанавливаем для них формат ячеек Денежный с количеством десятичных знаков, равным 2 и с обозначением денежных единиц в рублях.

7. Выделяем диапазон ячеек A3:C10 и устанавливаем для него выравнивание по горизонтали по левому краю.

8. В диапазоне ячеек D3:D10 устанавливаем горизонтальное выравнивание по центру.

9. В диапазоне ячеек E3:F10 станавливаем горизонтальное выравнивание по правому краю.

10. Слово «Итого:» объединенной ячейки и общую сумму поставок товаров выделяем жирным шрифтом и курсивом.

В результате получим макрос:

Sub Форматирование()

'

' Форматирование Макрос

' Макрос записан 09.10.2015 (Neklyudova)

'

Range("A2:F2").Select

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlTop

.WrapText = True

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With

Selection.Font.Bold = True

Columns("A:A").ColumnWidth = 11

Columns("A:A").ColumnWidth = 8.71

Columns("B:B").ColumnWidth = 13

Columns("B:B").ColumnWidth = 14.29

Columns("B:B").ColumnWidth = 15.43

Columns("C:C").ColumnWidth = 12.14

Columns("D:D").ColumnWidth = 11.14

Columns("E:E").ColumnWidth = 11.71

Columns("E:E").ColumnWidth = 11.86

Columns("F:F").ColumnWidth = 15.57

Range("A1:F1").Select

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlBottom

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With

Selection.Merge

With Selection.Font

.Name = "Arial"

.Size = 11

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlUnderlineStyleNone

.ThemeColor = xlThemeColorLight1

.TintAndShade = 0

.ThemeFont = xlThemeFontNone

End With

With Selection.Font

.Name = "Arial"

.Size = 14

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlUnderlineStyleNone

.ThemeColor = xlThemeColorLight1

.TintAndShade = 0

.ThemeFont = xlThemeFontNone

End With

Selection.Font.Bold = True

Range("A2:F11").Select

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlInsideVertical)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlInsideHorizontal)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

Range("A11:E11").Select

With Selection

.HorizontalAlignment = xlRight

.VerticalAlignment = xlBottom

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = True

End With

Range("A3:F3").Select

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlDouble

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThick

End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlInsideVertical)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

Range("A10:F10").Select

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlDouble

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThick

End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlInsideVertical)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

Range("D3:D10,F3:F11").Select

Range("F3").Activate

Selection.NumberFormat = "#,##0.00$"

Range("A3:C10").Select

With Selection

.HorizontalAlignment = xlLeft

.VerticalAlignment = xlBottom

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With

Range("D3:D10").Select

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlBottom

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With

Range("E3:F10").Select

With Selection

.HorizontalAlignment = xlRight

.VerticalAlignment = xlBottom

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With

Range("A11:F11").Select

Selection.Font.Bold = True

Selection.Font.Italic = True

End Sub

Ввод данных

Ниже приведена таблица с исходными данными (Код товара, Наименование товара, Единица измерения, Цена, Количество) и результатными данными, полученными при выполнении макросов ЗаголовокШапка, Формулы, Форматирование и ВводДанных.


Поставка товаров
Код товара Наименование товара Единица измерения Цена Количество Сумма
Товар1 шт 100,00р. 50 000,00р.
Товар2 шт 200,00р. 1 000 000,00р.
Товар3 шт 300,00р. 15 000 000,00р.
          0,00р.
          0,00р.
          0,00р.
          0,00р.
          0,00р.
Итого: 16 050000,00р.

Рис.19. Результат выполнения макросов

В результате записи макроса получим следующий программный код:

Sub ВводДанных()

'

' ВводДанных Макрос

' Макрос записан 09.10.2054 (Neklyudova)

'

Range("A3").Select

ActiveCell.FormulaR1C1 = "101"

Range("B3").Select

ActiveCell.FormulaR1C1 = "Товар1"

Range("C3").Select

ActiveCell.FormulaR1C1 = "шт."

Range("D3").Select

ActiveCell.FormulaR1C1 = "100"

Range("E3").Select

ActiveCell.FormulaR1C1 = "500"

Range("A4").Select

ActiveCell.FormulaR1C1 = "102"

Range("B4").Select

ActiveCell.FormulaR1C1 = "Товар2"

Range("C4").Select

ActiveCell.FormulaR1C1 = "шт."

Range("D4").Select

ActiveCell.FormulaR1C1 = "200"

Range("E4").Select

ActiveCell.FormulaR1C1 = "5000"

Range("A5").Select

ActiveCell.FormulaR1C1 = "103"

Range("B5").Select

ActiveCell.FormulaR1C1 = "Товар3"

Range("C5").Select

ActiveCell.FormulaR1C1 = "шт."

Range("D5").Select

ActiveCell.FormulaR1C1 = "300"

Range("E5").Select

ActiveCell.FormulaR1C1 = "50000"

Range("A6").Select

End Sub

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

- Ввод заголовка и “шапки” таблицы

- Ввод расчётных формул

- Форматирование таблицы

- Ввод данных.

Option Explicit

 
  Форматирование таблицы - student2.ru

Sub ЗаголовокШапка()

'

' ЗаголовокШапка Макрос

' Макрос записан 09.01.2015 (Neklyudova)

'

ActiveCell.FormulaR1C1 = "Поставка товаров"

Range("A2").Select

ActiveCell.FormulaR1C1 = "Код товара"

Range("B2").Select

ActiveCell.FormulaR1C1 = "Наименование товара"

Range("C2").Select

ActiveCell.FormulaR1C1 = "Единица измерения"

Range("D2").Select

ActiveCell.FormulaR1C1 = "Цена"

Range("E2").Select

ActiveCell.FormulaR1C1 = "Количество"

Range("F2").Select

ActiveCell.FormulaR1C1 = "Сумма"

Range("F3").Select

End Sub

 
  Форматирование таблицы - student2.ru

Sub Формулы()

' Формулы Макрос

' Макрос записан 09.10.2015 (Neklyudova)

'

ActiveCell.FormulaR1C1 = "=RC[-2]*RC[-1]"

Range("F3").Select

Selection.AutoFill Destination:=Range("F3:F10"), Type:=xlFillDefault

Range("F3:F10").Select

Range("E11").Select

ActiveCell.FormulaR1C1 = "Итого:"

Range("F11").Select

ActiveCell.FormulaR1C1 = "=SUM(R[-8]C:R[-1]C)"

Range("F12").Select

Range("F12").Select

End Sub

 
  Форматирование таблицы - student2.ru

Sub Форматирование()

'

' Форматирование Макрос

' Макрос записан 09.10.2015 (Neklyudova)

'

Range("A2:F2").Select

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlTop

.WrapText = True

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With

Selection.Font.Bold = True

Columns("A:A").ColumnWidth = 11

Columns("A:A").ColumnWidth = 8.71

Columns("B:B").ColumnWidth = 13

Columns("B:B").ColumnWidth = 14.29

Columns("B:B").ColumnWidth = 15.43

Columns("C:C").ColumnWidth = 12.14

Columns("D:D").ColumnWidth = 11.14

Columns("E:E").ColumnWidth = 11.71

Columns("E:E").ColumnWidth = 11.86

Columns("F:F").ColumnWidth = 15.57

Range("A1:F1").Select

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlBottom

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With

Selection.Merge

With Selection.Font

.Name = "Arial"

.Size = 11

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlUnderlineStyleNone

.ThemeColor = xlThemeColorLight1

.TintAndShade = 0

.ThemeFont = xlThemeFontNone

End With

With Selection.Font

.Name = "Arial"

.Size = 14

.Strikethrough = False

.Superscript = False

.Subscript = False

.OutlineFont = False

.Shadow = False

.Underline = xlUnderlineStyleNone

.ThemeColor = xlThemeColorLight1

.TintAndShade = 0

.ThemeFont = xlThemeFontNone

End With

Selection.Font.Bold = True

Range("A2:F11").Select

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlInsideVertical)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlInsideHorizontal)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

Range("A11:E11").Select

With Selection

.HorizontalAlignment = xlRight

.VerticalAlignment = xlBottom

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = True

End With

Range("A3:F3").Select

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlDouble

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThick

End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlInsideVertical)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

Range("A10:F10").Select

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Selection.Borders(xlEdgeLeft)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlDouble

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThick

End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

With Selection.Borders(xlInsideVertical)

.LineStyle = xlContinuous

.ColorIndex = 0

.TintAndShade = 0

.Weight = xlThin

End With

Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

Range("D3:D10,F3:F11").Select

Range("F3").Activate

Selection.NumberFormat = "#,##0.00$"

Range("A3:C10").Select

With Selection

.HorizontalAlignment = xlLeft

.VerticalAlignment = xlBottom

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With

Range("D3:D10").Select

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlBottom

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With

Range("E3:F10").Select

With Selection

.HorizontalAlignment = xlRight

.VerticalAlignment = xlBottom

.WrapText = False

.Orientation = 0

.AddIndent = False

.IndentLevel = 0

.ShrinkToFit = False

.ReadingOrder = xlContext

.MergeCells = False

End With

Range("A11:F11").Select

Selection.Font.Bold = True

Selection.Font.Italic = True

End Sub

 
  Форматирование таблицы - student2.ru

Sub ВводДанных()

'

' ВводДанных Макрос

' Макрос записан 09.10.2015 (Neklyudova)

'

Range("A3").Select

ActiveCell.FormulaR1C1 = "101"

Range("B3").Select

ActiveCell.FormulaR1C1 = "Товар1"

Range("C3").Select

ActiveCell.FormulaR1C1 = "шт."

Range("D3").Select

ActiveCell.FormulaR1C1 = "100"

Range("E3").Select

ActiveCell.FormulaR1C1 = "500"

Range("A4").Select

ActiveCell.FormulaR1C1 = "102"

Range("B4").Select

ActiveCell.FormulaR1C1 = "Товар2"

Range("C4").Select

ActiveCell.FormulaR1C1 = "шт."

Range("D4").Select

ActiveCell.FormulaR1C1 = "200"

Range("E4").Select

ActiveCell.FormulaR1C1 = "5000"

Range("A5").Select

ActiveCell.FormulaR1C1 = "103"

Range("B5").Select

ActiveCell.FormulaR1C1 = "Товар3"

Range("C5").Select

ActiveCell.FormulaR1C1 = "шт."

Range("D5").Select

ActiveCell.FormulaR1C1 = "300"

Range("E5").Select

ActiveCell.FormulaR1C1 = "50000"

Range("A6").Select

End Sub

Сохраните книгу, содержащую эти макросы под именем Запись_макроса_исходная.

Макросы можно корректировать в редакторе кода VBE. Например, макрос ЗаголовокШапка можно упростить следующим образом:

- удалить инструкции активизации ячеек;

- удалить строки кода, определяющие свойства шрифта надписей;

- использовать инструкцию присваивания в стиле Range.

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

Option Explicit

Форматирование таблицы - student2.ru Sub ЗаголовокШапка()

'

' ЗаголовокШапка Макрос

' Макрос записан 09.10.2015 (Neklyudova)

'

Range("A1") = "Поставка товаров"

Range("A2") = "Код товара"

Range("B2") = "Наименование товара"

Range("C2") = "Единица измерения"

Range("D2") = "Цена"

Range("E2") = "Количество"

Range("F2") = "Сумма"

End Sub

Макрос Формулы можно откорректировать так:

Sub Формулы()

'

' Формулы Макрос

' Макрос записан 09.10.2015 (Neklyudova)

'

Range("F3").Select

ActiveCell = "=D3*E3"

Selection.AutoFill Destination:=Range("F3:F10"), Type:=xlFillDefault

Range("E11") = "Итого:"

Range("F11") = "=SUM(F3:F10)"

End Sub

Примечание

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

Пока у вас нет достаточных знаний для полного понимания кода откорректируем только один макрос ЗаголовокШапка.

Создайте копию книги Запись_макроса_исходная под именем Запись_макроса_отредактированная. При этом в новую книгу будут скопированы все макросы из исходной книги.Измените макрос ЗаголовокШапка как показано выше.

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

Процедуры не могут в своём составе содержать вложенные процедуры, но они могут вызывать друг друга. Одним из способов вызова процедуры является использование оператора Call. Добавив в конец макроса ЗаголовокШапка три оператора

Call Формулы

Call Форматирование

Call ВводДанных

макросы Формулы, Форматирование и ВводДанных будут выполняться при вызове на выполнение макроса ЗаголовокШапка, в результате чего на рабочий лист будут выведены название таблицы и заголовки столбцов и выполнены инструкции макросов Формулы, Форматирование и ВводДанных, т.е. получена таблица, представленная на рис. 8.

Создайте копию книги Запись_макроса_отредактированная под именем Запись_макроса_шаблон. Удалите листы: Формулы, Форматирование и ВводДанных. Переименуйте лист Шапка в Поставка товаров. Измените макрос ЗаголовокШапка, сохраните книгу с поддержкой макросов.

Итак, у вас имеются три рабочих книги:

Запись_макроса_исходная

Запись_макроса_отредактированная

Запись_макроса_шаблон

В рабочей книге Запись_макроса_исходная хранятся макросы, полученные в результате записи в кодах VBA действий пользователя: ЗаголовокШапка, Формулы, Форматирование и ВводДанных. На рабочем листе Шапка приведён результат выполнения макроса Шапка, на листе Формулы – последовательности макросов Шапка ® Формулы, на листе Форматирование – последовательности макросов Шапка ® Формулы ® Форматирование и на листе ВводДанных – макросов Шапка ®Формулы ® Форматирование ® ВводДанных.

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

В рабочей книге Запись_макроса_отредактированная макрос ЗаголовокШапка отредактирован c целью его упрощения. В обеих этих книгах для наглядности рабочие листы: Лист1, Лист2, Лист3, Лист4 – переименованы соответственно в Шапка, Формулы, Форматирование и ВводДанных.

В рабочей книге Запись_макроса_Шаблон содержится один рабочий лист Поставка товаров, и в конец макроса ЗаголовокШапка добавлены инструкции вызова макросов Формулы, Форматирование и ВводДанных:

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

Наши рекомендации