Автоматизация добавления примечаний в указанном диапазоне
Трюк, который мы сейчас рассмотрим, позволяет быстро вставить примечание в ячейки определенного диапазона, соответствующие указанным требованиям.
Для достижения такого эффекта можно воспользоваться макросом, код которого приведен в листинге 2.33.
Листинг 2.33. Добавление примечаний в диапазон
Sub CreateComments()
Dim cell As Range
' Производим поиск по всем ячейкам диапазона и добавляем
примечания _
ко всем ячейкам, содержащим слово «Выручка»
For Each cell In Range(«B1:B100»)
If cell.Value Like «*Выручка*» Then
cell.ClearComments
cell.AddComment «Неучтенная наличка»
End If
Next
End Sub
С помощью данного макроса обрабатывается диапазон В1:В100. После применения макроса ко всем ячейкам, содержащим текст Выручка, будет добавлено примечание Неучтенная наличка. При этом в примечании будет отсутствовать имя пользователя, его создавшего. Если в указанных ячейках содержалось другое примечание, то оно будет удалено и заменено тем, которое указано в макросе. Очевидно, что с помощью подобных макросов можно создавать произвольные примечания к любым ячейкам указанного диапазона.
Выполнив несложный трюк, можно быстро залить любой диапазон ячеек требуемым цветом (или комбинацией разных цветов). Для этого следует использовать, например, такой макрос (листинг 2.34).
Листинг 2.34. Создание заливки диапазона
Sub FillRange()
' Заливка диапазона
With Range(«B1:E10»)
' Задаем узор – сетчатый
.Interior.Pattern = xlPatternChecker
' Цвет узора – синий
.Interior.PatternColor = RGB(0, 0, 255)
' Цвет ячейки – красный
.Interior.Color = RGB(255, 0, 0)
End With
End Sub
В результате применения данного макроса диапазон В1:Е10 будет залит красным цветом с синим сетчатым узором.
Ввод строго ограниченных значений в указанный диапазон
В процессе эксплуатации программы иногда возникает необходимость сделать так, чтобы вводимые пользователем данные не выходили за рамки определенного интервала. В этом подразделе мы рассмотрим два трюка, которые позволяют решить эту задачу: с использованием диалогового окна и путем непосредственного ввода данных в диапазон. Применение подобных трюков позволяет контролировать корректность вводимых пользователями данных.
Ввод данных с помощью диалогового окна
Можно настроить программу таким образом, что ввод строго ограниченных данных в указанный диапазон будет осуществляться только с помощью диалогового окна. Для этого нужно воспользоваться макросом, код которого приведен в листинге 2.35.
Листинг 2.35. Настройка ввода данных в диалоговом окне
Sub DialogInputData()
Dim intMin As Integer, intMax As Integer ' Диапазон значений
Dim strInput As String ' Введенная пользователем строка
Dim strMessage As String
Dim intValue As Integer
intMin = 1 ' Минимальное значение
intMax = 50 ' Максимальное значение
strMessage = "Введите значение от " & intMin & " до " & intMax
' Ввод значения (цикл завершается, когда пользователь вводит _
значение из заданного диапазона или отменяет ввод)
Do
strInput = InputBox(strMessage)
If strInput = "" Then Exit Sub ' Отмена ввода
' Проверка, содержит ли введенная пользователем строка число
If IsNumeric(strInput) Then
intValue = CInt(strInput)
' Проверка, удовлетворяет ли значение диапазону
If intValue >= intMin And intValue <= intMax Then
' Все условия выполнены
Exit Do
End If
End If
' Формирование сообщения с текстом ошибки
strMessage = «Вы ввели некорректное значение.» & vbNewLine & _
"Введите число от " & intMin & " до " & intMax
Loop
' Внесение данных в ячейку
ActiveSheet.Range(«A1»).Value = strInput
End Sub
После написания данного кода в окне выбора макросов станет доступен макрос DialoglnputData. Для его вызова лучше создать специальную кнопку. После нажатия данной кнопки откроется диалоговое окно с предложением ввести значение от 1 до 50 (интервал значений можно изменять по своему усмотрению – для этого достаточно внести соответствующие изменения в код макроса). При попытке ввода значения, которое выходит за рамки указанного интервала, появится окно с соответствующим предупреждением и повторным предложением ввести корректное значение. Введенное значение будет помещено в ячейку А1 – это указано в строке кода ActiveSheet.Range («Al»). Value = strlnput. Если в данной строке вместо А1 указать, например, В1: Е5, то введенное значение будет помещено во все ячейки указанного интервала.
Непосредственный ввод данных
Если ввод данных с использованием диалогового окна по каким-либо причинам нецелесообразен, то можно вводить их непосредственно в диапазон. При этом программа будет контролировать вводимые данные (чтобы они не выходили за рамки указанного интервала).
Читать дальше
Конец ознакомительного отрывка
Купить книгу