Готовые макросы в VBA Excel, Миронов. Готовые макросы в vba excel, Миронов Глава Макросы 9
Скачать 1.35 Mb.
|
Выделение ячеек через интервал_2Sub IntervalCellSelect() Dim intFirstRow As Integer ' Первая строка для выделения Dim intLastRow As Integer ' Последняя строка для выделения Dim rgCells As Range ' Объединение выделяемых ячеек Dim cell As Range ' Текущая ячейка Dim intRow As Integer intFirstRow = 3 intLastRow = 300 ' Формирование объединения ячеек в столбце "B" от строки _ intFirstRow до строки intLastRow с шагом 3 For intRow = intFirstRow To intLastRow Step 3 Set cell = Cells(intRow, 1) Set rgCells = Union(cell, _ IIf(intRow = intFirstRow, cell, rgCells)) Next ' Выделение всех ячеек в объединении rgCells.Select End Sub Выделение нескольких диапазоновSub SelectRange() Range("D3:D10, A3:A10 , F3").Select End Sub Движение по ячейкампеременная.Offset(RowOffset, ColumnOffset) В качестве переменных может выступать как ячейка так и диапазон (Range) удобно пользоваться этой функцией для смещения относительно текущей ячейки. Например, смещение ввниз на одну ячейку и выделение ее: ActiveCell.Offset(1, 0).Select Если нужно двигаться вверх, то нужно использовать отрицательное число: ActiveCell.Offset(-1, 0).Select Функция ниже использует эту возможность для того, чтобы пробежаться вниз до первой пустой ячейки. Sub beg() Dim a As Boolean Dim d As Double Dim c As Range a = True Set c = Range(ActiveCell.address) c.Select d = c.Value c.Value = d While (a = True) ActiveCell.Offset(1, 0).Select If (IsEmpty(ActiveCell.Value) = False) Then Set c = Range(ActiveCell.address) c.Select d = c.Value c.Value = d Else a = False End If Wend End Sub Поиск ближайшей пустой ячейки столбцаSub FindEmptyCell() ' Поиск ближайшей пустой ячейки в текущем столбце Do While Not IsEmpty(ActiveCell.Value) ActiveCell.Offset(1, 0).Select Loop End Sub Поиск максимального значения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 Поиск и замена по шаблонуSub ReplaceCellsData() Dim cell As Range ' Просмотр всех ячеек диапазона G1:K20 и замена искомого текста For Each cell In [G1:K20] If cell.Value Like "*Доход*" Then cell.Value = "Выручка" cell.Interior.Color = RGB(255, 255, 0) Else cell.Interior.Color = RGB(255, 255, 255) End If Next End Sub Поиск значения с отображением результата в отдельном окнеSub Search() Dim rgResult As Range ' Поиск заданного значения в диапазоне B1:B20 и вывод результата Set rgResult = Range("B1:B20").Find(9999, , xlValues) If rgResult Is Nothing Then MsgBox "Поиск не дал результатов" Else MsgBox rgResult.Address End If End Sub Поиск с выделением найденных данных_1Sub FindAndSelect() Dim strStartAddr As String ' Хранит координаты первого найденного _ значения Dim rgResult As Range ' Поиск первого входжения искомого слова Set rgResult = Range("B1:B10").Find("Прибыль", , xlValues) If Not rgResult Is Nothing Then ' Сохраним адрес найденной ячейки (чтобы контролировать _ зацикливание поиска) strStartAddr = rgResult.Address End If Do While Not rgResult Is Nothing ' Обработка результата поиска rgResult.Interior.Color = RGB(255, 255, 0) ' Новый поиск Set rgResult = Range("B1:B10").FindNext(rgResult) If rgResult.Address = strStartAddr Then ' Поиск завершен Exit Do End If Loop End Sub |