- •Введение в язык макрокоманд vba.
- •Типы данных
- •Описание констант
- •Описание переменных
- •Правила присвоения имен в языке Visual Basic
- •Старшинство операторов
- •Типы макросов.
- •Инструкции присвоения
- •Организация ветвлений. Инструкция If...Then...Else
- •If условие Then [инструкции] [Else инструкции_else]
- •Инструкция Select Case
- •Ввод и вывод информации
- •InputBox(текстовая_строка, заголовок)
- •Циклы в программе
- •Инструкция For...Next
- •Инструкция For Each...Next
- •Инструкция While….Wend
- •Объекты. Свойства. Методы.
- •Объект.Метод Инструкция Set
- •Application.Workbooks("Отчет").Worksheets("Май").Rows(2).Delete
- •Объекты Microsoft Excel
- •Объект Application
- •Объект Workbook. Свойства и Методы.
- •Объект Range
- •Строковые ссылки в стиле а1 или имена диапазонов
- •Числовые индексы строк и колонок
- •Свойства NumberFormat и WrapText
- •Свойство Offset
- •Свойства CurrentRegion и UsedRange
- •Объект Font
- •Объект Interior
Числовые индексы строк и колонок
Получить нужную ячейку можно и так: указать индексы строки и колонки, на пересечении которых она находится. Первым задается индекс строки, за ним следует индекс колонки.
Чтобы: |
Напишите: |
Изменить значение в ячейке А1 |
Worksheets("Лист1").Cells(1, 1).Value = 3 на листе Sheetl |
Задать формулу для ячейки В 1 |
Cells(1, 2). Formula = "=5-10*RAND()" на активном листе |
Установить объектную переменную |
Set objRange = Worksheets( "Sheetl"). Cells(1, 1) |
Числовые индексы строк и колонок очень удобны при обращении к ячейке по значению счетчика цикла.
Свойства NumberFormat и WrapText
NumberFormat устанавливает числовой формат.
Пример
Установить числовые форматы для ячейки A17, первой строки, столбца C (соответственно) на листе Лист1.
Worksheets("Лист1").Range("A17").NumberFormat = "General"
Worksheets("Лист1").Rows(1).NumberFormat = "hh:mm:ss"
Worksheets("Лист1").Columns("C"). NumberFormat = "$#,##0.00_);[Red]($#,##0.00)"
WrapText устанавливает многострочный текст.
Пример
Форматировать ячейку B2 на листе Лист1 так, чтобы в ячейке текст переносился по словам.
Worksheets("Лист1 ").Range("B2").Value = "This text should wrap in a cell."
Worksheets("Лист1 ").Range("B2").WrapText = True
Свойство Offset
Весьма часто возникает необходимость обратиться к диапазону ячеек, который отстоит от другого диапазона на определенное число строк и колонок. Свойство Offset объекта Range принимает аргументы RowOffset и ColumnOffset и возвращает новый диапазон. В следующем примере программа определяет тип данных в каждой ячейке из диапазона А1:А10 и перечисляет эти типы в колонке, расположенной справа от исходных ячеек:
Sub ScanColumn()
For Each c In Worksheets("Лист1").Range("A1:A10").Cells
If Application.IsText(c.Value) Then
c.0ffset(0, 1).Formula = "Text"
Elself Application.IsNumber(c.Value) Then
c.0ffset(0, 1).Formula = "Number"
Elself Application.IsLogical(c.Value) Then
c.0ffset(0, 1).Formula = "Boolean"
Elself Application.IsError(c.Value) Then
c.0ffset(0, 1).Formula = "Error"
Elself c.Value = "" Then
c.0ffset(0, 1).Formula = "(blank cell)"
End If
Next c
End Sub
Свойства CurrentRegion и UsedRange
Эти два свойства очень полезны, когда программа работает с диапазонами, размерами которых вы не можете управлять. Текущий регион (current region) — это диапазон ячеек, ограниченный пустыми строками и колонками или сочетанием пустых строк, пустых колонок и границ рабочего листа.
CurrentRegion — свойство объекта Range. На листе может быть несколько текущих регионов — все зависит от того, к какому объекту Range Вы обращаетесь.
Допустим, лист Лист1 содержит список, для которого Вы хотите установить формат чисел. Единственное, что известно об этом списке, — он начинается с ячейки А1; число строк и колонок в нем Вы не знаете. В следующем примере показано, как отформатировать такой список через свойство CurrentRegion:
Sub FormatRange()
Set myRange = Worksheets("Лист1").Range("A1").CurrentRegion
myRange.NumberFormat = "0.0"
End Sub
Использованный диапазон (used range) ограничен левой верхней и правой нижней заполненными ячейками, наиболее удаленными друг от друга. В этом диапазоне содержатся все заполненные ячейки листа, а также расположенные между ними пустые ячейки. На листе может быть только один такой диапазон, и UsedRange является свойством объекта Worksheet, а не Range.