Примеры циклов Do Until… Loop
Цикл Do Until… Loop с условием до исполняемых операторов:
Цикл Do Until… Loop с условием после исполняемых операторов:
Бесконечный цикл и Exit Do:
Когда число итераций цикла дойдет до 1000, он будет завершен, и информационное окно MsgBox выведет на экран число повторений цикла Do Until… Loop из этого примера.
Цикл Do Until… Loop с условием до исполняемых операторов:
Sub test1()
Dim a As Byte
Do Until a > 9
a = a + 1
Loop
MsgBox a
End Sub
Цикл Do Until… Loop с условием после исполняемых операторов:
Sub test2()
Dim a As Byte
Do
a = a + 1
Loop Until a > 9
MsgBox a
End Sub
Бесконечный цикл и Exit Do:
Sub test5()
Dim a As Byte, n As Long
Do Until a > 10
a = a + 1
n = n + 1
If a = 10 Then
a = 0
End If
If n = 1000 Then
Exit Do
End If
Loop
MsgBox n
End Sub
Когда число итераций цикла дойдет до 1000, он будет завершен, и информационное окно MsgBox выведет на экран число повторений цикла Do Until… Loop из этого примера.
Цикл While… Wend
Цикл While… Wend в VBA Excel предназначен для выполнения блока операторов до тех пор, пока выполняется заданное условие (возвращается значение True). Этот цикл позволяет проверять условие только до выполнения операторов. Принудительный выход из цикла с помощью оператора Exit Do не предусмотрен.
Синтаксис цикла While… Wend
#VBA #ExcelVBA #While #WhileWend #ЦиклWhile #Цикл
Цикл While… Wend в VBA Excel предназначен для выполнения блока операторов до тех пор, пока выполняется заданное условие (возвращается значение True). Этот цикл позволяет проверять условие только до выполнения операторов. Принудительный выход из цикла с помощью оператора Exit Do не предусмотрен.
Синтаксис цикла While… Wend
While condition
[ statements ]
Wend
#VBA #ExcelVBA #While #WhileWend #ЦиклWhile #Цикл
Пример цикла While… Wend
Информационное сообщение MsgBox выведет число 105.
Sub test1()
Dim a As Byte
While a < 100
a = a + 7
Wend
MsgBox a
End Sub
Информационное сообщение MsgBox выведет число 105.
✨ Функции для работы с буфером обмена
🛠 Функция записи текста в буфер обмена:
🛠 Функция вставки текста из буфера обмена:
🛠 Функция очистки буфера обмена:
✅ Пример использования функций для работы с буфером обмена:
#VBA #ExcelVBA #БуферОбмена #ClipBoard
🛠 Функция записи текста в буфер обмена:
Function SetClipBoardText(ByVal Text As Variant) As Boolean
SetClipBoardText = CreateObject("htmlfile").parentWindow.clipboardData.SetData("Text", Text)
End Function
🛠 Функция вставки текста из буфера обмена:
Function GetClipBoardText() As String
On Error Resume Next
GetClipBoardText = CreateObject("htmlfile").parentWindow.clipboardData.GetData("Text")
End Function
🛠 Функция очистки буфера обмена:
Function ClearClipBoardText() As Boolean
ClearClipBoardText = CreateObject("htmlfile").parentWindow.clipboardData.clearData("Text")
End Function
✅ Пример использования функций для работы с буфером обмена:
Sub Primer()
Dim s As String
s = "Копирование текста из переменной в буфер обмена"
'Копируем текст в буфер обмена
SetClipBoardText (s)
'Вставляем текс из буфера обмена в ячейку "A1"
Range("A1") = GetClipBoardText
'Очищаем буфер обмена, если это необходимо
ClearClipBoardText
End Sub
#VBA #ExcelVBA #БуферОбмена #ClipBoard
Обращение к ячейке
Все известные мне способы обращения к ячейке в VBA Excel.
Обращение к ячейке по адресу
Обращение к ячейке "C5" на активном листе:
Обращение к активной (выбранной) ячейке на активном листе:
Обращение к ячейке "C5" на неактивном листе книги с кодом:
Имя ярлыка может совпадать с основным именем листа. Увидеть эти имена можно в окне редактора VBA в проводнике проекта. Без скобок отображается основное имя листа, в скобках – имя ярлыка.
Обращение к ячейке "C5" на листе "Лист2" другой открытой книги из книги с кодом:
Удобно обращаться к ячейке через свойство рабочего листа Cells(№ строки, № столбца), так как вместо номеров строк и столбцов можно использовать переменные.
#VBA #ExcelVBA #ОбращениеКЯчейке #Range #Cells
Все известные мне способы обращения к ячейке в VBA Excel.
Обращение к ячейке по адресу
Обращение к ячейке "C5" на активном листе:
Range("C5")
Cells(5, 3)
Cells(5, "C")
[C5]Обращение к активной (выбранной) ячейке на активном листе:
ActiveCell
Обращение к ячейке "C5" на неактивном листе книги с кодом:
'по основному имени листа
Лист2.Range("C5")
Лист2.Cells(5, 3)
Лист2.Cells(5, "C")
Лист2.[C5]
'по имени ярлыка
Sheets("Имя ярлыка").Range("C5")
Sheets("Имя ярлыка").Cells(5, 3)
Sheets("Имя ярлыка").Cells(5, "C")
Sheets("Имя ярлыка").[C5]
Имя ярлыка может совпадать с основным именем листа. Увидеть эти имена можно в окне редактора VBA в проводнике проекта. Без скобок отображается основное имя листа, в скобках – имя ярлыка.
Обращение к ячейке "C5" на листе "Лист2" другой открытой книги из книги с кодом:
Workbooks("Книга2.xlsm").Sheets("Лист2").Range("C5")
Workbooks("Книга2.xlsm").Sheets("Лист2").Cells(5, 3)
Workbooks("Книга2.xlsm").Sheets("Лист2").Cells(5, "C")
Workbooks("Книга2.xlsm").Sheets("Лист2").[C5]Удобно обращаться к ячейке через свойство рабочего листа Cells(№ строки, № столбца), так как вместо номеров строк и столбцов можно использовать переменные.
#VBA #ExcelVBA #ОбращениеКЯчейке #Range #Cells
Обращение к ячейке по индексу
К ячейке на рабочем листе можно обращаться по ее индексу (порядковому номеру), который считается по расположению ячейки на листе слева-направо и сверху-вниз.
Для примера, Cells(4) - это та же ячейка, что и Cells(1, 4). Используется такое обозначение редко, тем более, что у разных версий Excel количество строк и столбцов на рабочем листе может быть разным.
По индексу можно обращаться к ячейке не только на всем рабочем листе, но и в отдельном диапазоне. Нумерация ячеек осуществляется в пределах заданного диапазона по тому же правилу: слева-направо и сверху-вниз. Вот индексы ячеек диапазона Range("A1:C3"):
К ячейке на рабочем листе можно обращаться по ее индексу (порядковому номеру), который считается по расположению ячейки на листе слева-направо и сверху-вниз.
Для примера, Cells(4) - это та же ячейка, что и Cells(1, 4). Используется такое обозначение редко, тем более, что у разных версий Excel количество строк и столбцов на рабочем листе может быть разным.
По индексу можно обращаться к ячейке не только на всем рабочем листе, но и в отдельном диапазоне. Нумерация ячеек осуществляется в пределах заданного диапазона по тому же правилу: слева-направо и сверху-вниз. Вот индексы ячеек диапазона Range("A1:C3"):
Обращение к ячейке по имени
Если ячейке на рабочем листе Excel присвоено имя (Формулы –> Присвоить имя), то обращаться к ней можно по присвоенному имени.
Допустим одной из ячеек присвоено имя – "Итого", тогда обратиться к ней можно – Range("Итого").
Если ячейке на рабочем листе Excel присвоено имя (Формулы –> Присвоить имя), то обращаться к ней можно по присвоенному имени.
Допустим одной из ячеек присвоено имя – "Итого", тогда обратиться к ней можно – Range("Итого").
Запись, чтение, очистка
Запись информации в ячейку
Содержание ячейки определяется ее свойством "Value", которое в VBA Excel является свойством по умолчанию и его можно явно не указывать. Записывается информация в ячейку при помощи оператора присваивания "=":
Вместе с числами и текстом можно использовать переменные. Примеры здесь и ниже приведены для активного листа. Для неактивных листов дополнительно необходимо указывать имя листа.
Чтение информации из ячейки
Считать информацию из ячейки в переменную можно также при помощи оператора присваивания "=":
Точно также можно обмениваться информацией между ячейками:
Очистка значения ячейки
Очищается ячейка от значения с помощью метода ClearContents. Кроме того, можно присвоить ячейке значение нуля, пустой строки или Empty:
#Запись #Чтение #Очистка #Range #Cells
Запись информации в ячейку
Содержание ячейки определяется ее свойством "Value", которое в VBA Excel является свойством по умолчанию и его можно явно не указывать. Записывается информация в ячейку при помощи оператора присваивания "=":
Cells(2, 4).Value = 15
Cells(2, 4) = 15
Range("A1") = "Этот текст записываем в ячейку"
ActiveCell = 28 + 10*36
Вместе с числами и текстом можно использовать переменные. Примеры здесь и ниже приведены для активного листа. Для неактивных листов дополнительно необходимо указывать имя листа.
Чтение информации из ячейки
Считать информацию из ячейки в переменную можно также при помощи оператора присваивания "=":
Sub Test()
Dim a1 As Integer, a2 As Integer, a3 As Integer
Range("A3") = 6
Cells(2, 5) = 15
a1 = Range("A3")
a2 = Cells(2, 5)
a3 = a1 * a2
MsgBox a3
End Sub
Точно также можно обмениваться информацией между ячейками:
Cells(2, 2) = Range("A4")Очистка значения ячейки
Очищается ячейка от значения с помощью метода ClearContents. Кроме того, можно присвоить ячейке значение нуля, пустой строки или Empty:
Cells(10, 2).ClearContents
Range("D23") = 0
ActiveCell = ""
Cells(5, "D") = Empty
#Запись #Чтение #Очистка #Range #Cells
👍1
Цвет ячейки (заливка, фон)
Свойство .Interior.Color объекта Range
Начиная с Excel 2007 основным способом заливки диапазона или отдельной ячейки цветом является использование свойства .Interior.Color объекта Range путем присваивания ему значения цвета в виде десятичного числа от 0 до 16777215 (всего 16777216 цветов).
Если присвоить свойству .Interior.Color отрицательное значение от -16777215 до -1, то цвет будет соответствовать значению, равному сумме максимального значения палитры (16777215) и присвоенного отрицательного значения. Например, заливка всех трех ячеек после выполнения следующего кода будет одинакова:
Числовые значения цветов запомнить невозможно, поэтому часто возникает вопрос о том, как узнать числовое значение фона ячейки. Следующий код VBA Excel выводит сообщения о числовых значениях присвоенных ранее цветов:
Вместо вывода сообщений можно присвоить числовые значения цветов переменным, объявив их как Long.
Использование предопределенных констант
В VBA Excel есть предопределенные константы часто используемых цветов для заливки ячеек:
#ЦветЯчейки #Заливка #Фон #InteriorColor #Interior #Color
Свойство .Interior.Color объекта Range
Начиная с Excel 2007 основным способом заливки диапазона или отдельной ячейки цветом является использование свойства .Interior.Color объекта Range путем присваивания ему значения цвета в виде десятичного числа от 0 до 16777215 (всего 16777216 цветов).
Sub ColorTest1()
Range("A1").Interior.Color = 31569
Range("A4:D8").Interior.Color = 4569325
Range("C12:D17").Cells(4).Interior.Color = 568569
Cells(3, 6).Interior.Color = 12659
End Sub
Если присвоить свойству .Interior.Color отрицательное значение от -16777215 до -1, то цвет будет соответствовать значению, равному сумме максимального значения палитры (16777215) и присвоенного отрицательного значения. Например, заливка всех трех ячеек после выполнения следующего кода будет одинакова:
Sub ColorTest11()
Cells(1, 1).Interior.Color = -12207890
Cells(2, 1).Interior.Color = 16777215 + (-12207890)
Cells(3, 1).Interior.Color = 4569325
End Sub
Числовые значения цветов запомнить невозможно, поэтому часто возникает вопрос о том, как узнать числовое значение фона ячейки. Следующий код VBA Excel выводит сообщения о числовых значениях присвоенных ранее цветов:
Sub ColorTest2()
MsgBox Range("A1").Interior.Color
MsgBox Range("A4:D8").Interior.Color
MsgBox Range("C12:D17").Cells(4).Interior.Color
MsgBox Cells(3, 6).Interior.Color
End Sub
Вместо вывода сообщений можно присвоить числовые значения цветов переменным, объявив их как Long.
Использование предопределенных констант
В VBA Excel есть предопределенные константы часто используемых цветов для заливки ячеек:
#ЦветЯчейки #Заливка #Фон #InteriorColor #Interior #Color
👍1
Цветовая модель RGB
Цветовая система RGB представляет собой комбинацию различных по интенсивности основных трех цветов: красного, зеленого и синего. Они могут принимать значения от 0 до 255. Если все значения равны 0 — это черный цвет, если все значения равны 255 — это белый цвет.
Выбрать цвет и узнать его значения RGB можно с помощью палитры Excel:
Цветовая система RGB представляет собой комбинацию различных по интенсивности основных трех цветов: красного, зеленого и синего. Они могут принимать значения от 0 до 255. Если все значения равны 0 — это черный цвет, если все значения равны 255 — это белый цвет.
Выбрать цвет и узнать его значения RGB можно с помощью палитры Excel:
❤1
Очистка ячейки (диапазона) от заливки
Для очистки ячейки (диапазона) от заливки используется константа xlNone:
#VBA #ExcelVBA #xlNone #ОчисткаЯчейки
Для очистки ячейки (диапазона) от заливки используется константа xlNone:
Range("A1").Interior.Color = xlNone#VBA #ExcelVBA #xlNone #ОчисткаЯчейки
Свойство .Interior.ColorIndex объекта Range
До появления Excel 2007 существовала только ограниченная палитра для заливки ячеек фоном, состоявшая из 56 цветов, которая сохранилась и в настоящее время. Каждому цвету в этой палитре присвоен индекс от 1 до 56. Присвоить цвет ячейке по индексу или вывести сообщение о нем можно с помощью свойства .Interior.ColorIndex:
Просмотреть ограниченную палитру для заливки ячеек фоном можно, запустив в VBA Excel простейший макрос:
Номера строк активного листа от 1 до 56 будут соответствовать индексу цвета, а ячейка в первом столбце будет залита соответствующим индексу фоном.
#VBA #ExcelVBA #ColorIndex #InteriorColorIndex #Interior
До появления Excel 2007 существовала только ограниченная палитра для заливки ячеек фоном, состоявшая из 56 цветов, которая сохранилась и в настоящее время. Каждому цвету в этой палитре присвоен индекс от 1 до 56. Присвоить цвет ячейке по индексу или вывести сообщение о нем можно с помощью свойства .Interior.ColorIndex:
Range("A1").Interior.ColorIndex = 8
MsgBox Range("A1").Interior.ColorIndexПросмотреть ограниченную палитру для заливки ячеек фоном можно, запустив в VBA Excel простейший макрос:
Sub ColorIndex()
Dim i As Byte
For i = 1 To 56
Cells(i, 1).Interior.ColorIndex = i
Next
End Sub
Номера строк активного листа от 1 до 56 будут соответствовать индексу цвета, а ячейка в первом столбце будет залита соответствующим индексу фоном.
#VBA #ExcelVBA #ColorIndex #InteriorColorIndex #Interior
Цвет текста (шрифта) в ячейке
Свойство .Font.Color (основная палитра)
Основная палитра, начиная c Excel 2007, состоит из 16777216 цветов. Свойство .Font.Color может принимать значения от 0 до 16777215, причем 0 соответствует черному цвету, а 16777215 — белому.
При записи макрорекордером макроса с присвоением шрифту цвета используются отрицательные значения свойства .Font.Color, которые могут быть в пределах от -16777215 до -1. Отрицательные значения соответствуют по цвету положительному значению, равному сумме наибольшего индекса основной палитры и данного отрицательного значения. Например, отрицательное значение -8257985 соответствует положительному значению 8519230, являющегося результатом выражения 16777215 + (-8257985). Цвета текста двух ячеек из следующего кода будут одинаковы:
#VBA #ExcelVBA #ЦветТекста #FontColor #Font #Color
Свойство .Font.Color (основная палитра)
Основная палитра, начиная c Excel 2007, состоит из 16777216 цветов. Свойство .Font.Color может принимать значения от 0 до 16777215, причем 0 соответствует черному цвету, а 16777215 — белому.
Cells(1, 1).Font.Color = 0
Cells(2, 1).Font.Color = 6777215
Cells(3, 1).Font.Color = 4569325
При записи макрорекордером макроса с присвоением шрифту цвета используются отрицательные значения свойства .Font.Color, которые могут быть в пределах от -16777215 до -1. Отрицательные значения соответствуют по цвету положительному значению, равному сумме наибольшего индекса основной палитры и данного отрицательного значения. Например, отрицательное значение -8257985 соответствует положительному значению 8519230, являющегося результатом выражения 16777215 + (-8257985). Цвета текста двух ячеек из следующего кода будут одинаковы:
Cells(1, 1).Font.Color = -8257985
Cells(2, 1).Font.Color = 8519230
#VBA #ExcelVBA #ЦветТекста #FontColor #Font #Color
Свойство .Font.Color и модель RGB
Для изменения цвета текста в ячейке можно использовать цветовую модель RGB:
Аргументы функции RGB могут принимать значения от 0 до 255. Если все аргументы равны 0, цвет — черный, если все аргументы равны 255, цвет — белый. Функция RGB преобразует числовые значения основных цветов (красного, зеленого и синего) в индекс основной палитры.
Свойство .Font.Color и предопределенные константы
Цвет шрифту в ячейке можно присвоить с помощью предопределенных констант:
Список предопределенных констант смотрите в таблице ниже.
#VBA #ExcelVBA #RGB #FontColor
Для изменения цвета текста в ячейке можно использовать цветовую модель RGB:
Range("A1").Font.Color = RGB(200, 150, 250)
Cells(2, 1).Font.Color = RGB(200, 150, 100)Аргументы функции RGB могут принимать значения от 0 до 255. Если все аргументы равны 0, цвет — черный, если все аргументы равны 255, цвет — белый. Функция RGB преобразует числовые значения основных цветов (красного, зеленого и синего) в индекс основной палитры.
Свойство .Font.Color и предопределенные константы
Цвет шрифту в ячейке можно присвоить с помощью предопределенных констант:
Range("A1:C3").Font.Color = vbGreen
Range(Cells(4, 1), Cells(6, 3)).Font.Color = vbBlue
Cells(7, 1).Font.Color = vbRedСписок предопределенных констант смотрите в таблице ниже.
#VBA #ExcelVBA #RGB #FontColor