Sub SelectCellRange()
Dim strSelTop As String, strSelBottom As String
' Получение адресов нижней и верхней ячеек диапазона для выделения
strSelBottom = ActiveCell.Address
strSelTop = Cells(1, ActiveCell.Column).Address
' Выделяем все ячейки выше текущей (вместе с текущей ячейкой)
Range(strSelTop & ":" & strSelBottom).Select
End Sub
После выполнения макроса будет выделен диапазон, расположенный над текущей ячейкой (вместе с текущей ячейкой).
Поиск ближайшей пустой ячейки столбца
Если таблица заполнена большим количеством данных, то иногда бывает необходимо быстро найти ближайшую ячейку столбца, не содержащую никаких данных. Поскольку выполнение данной операции вручную – процесс слишком трудоемкий, целесообразно воспользоваться макросом, код которого приведен в листинге 2.19.
Sub FindEmptyCell()
' Поиск ближайшей пустой ячейки в текущем столбце
Do While Not IsEmpty(ActiveCell.Value)
ActiveCell.Offset(1, 0).Select
Loop
End Sub
После выполнения данного макроса курсор быстро «пробежит» по всем ячейкам текущего столбца, остановившись на ближайшей пустой ячейке. При этом необходимо учитывать, что направление поиска – сверху вниз, то есть ячейки, расположенные над начальным положением курсора, обнаружены не будут, поэтому перед запуском макроса следует установить курсор в верхнюю ячейку столбца.
Поиск максимального значения в диапазоне
В процессе работы с большими объемами данных часто возникает необходимость быстрого поиска максимального значения определенного диапазона (либо всего рабочего листа). Например, если в таблице хранится информация о торговой выручке за каждый день в течение года, то, чтобы найти максимальную дневную выручку вручную, потребуется слишком много времени и усилий. Для автоматизации данного процесса можно применить макрос, код которого приведен в листинге 2.20.
Sub FindMaxValue()
On Error Goto NoCell
If Selection.Count > 1 Then
' Поиск максимального значения в выделенных ячейках
Selection.Find(Application.Max(Selection)).Select
Else
' Поиск максимального значения во всех ячейках листа
ActiveSheet.Cells.Find(Application.Max(ActiveSheet.Cells)).Select
End If
Exit Sub
NoCell:
MsgBox «Максимальное значение не найдено»
End Sub
После запуска данного макроса будет выделена ячейка, содержащая максимальное значение. Если выделен диапазон, поиск осуществляется только в нем; если же диапазон не выделен, то поиск ведется по всему рабочему листу. Если максимальное значение не обнаружено, то по окончании поиска на экране отобразится окно с сообщением Максимальное значение не найдено (текст этого сообщения можно корректировать по своему усмотрению путем внесения соответствующих изменений в код макроса).
Автоматическая замена значений диапазона
Рассмотрим трюк, с помощью которого можно автоматически заменять значения ячеек диапазона на какие-либо фиксированные значения. В листинге 2.21 показан код одного из макросов, которые позволяют решить данную задачу.
Sub ReplaceValues()
Dim cell As Range
' Проверка каждой ячейки диапазона на возможность замены _
значения в ней (отрицательные значения заменяются на -1, _
положительные – на 1)
For Each cell In Range(«C1:C3»).Cells
If cell.Value < 0 Then
cell.Value = -1
ElseIf cell.Value > 0 Then
cell.Value = 1
End If
Next
End Sub
В данном примере обрабатывается диапазон С1:C3. После применения приведенного выше макроса все положительные значения данного диапазона будут заменены на 1, а отрицательные – на -1.