Автор Тема: Excel VBA Макросы: Сравнить время в двух столбцах с реальным временем.  (Прочитано 173 раз)

Оффлайн Alexandr

  • Посетитель форума
  • Сообщений: 2
Нужно сделать макрос.
В столбцах А и В время. Надо сравнить с реальным временем. Если А<Time()<B, то ячейку В окрасить в красный цвет, иначе ничего не делать.

[вложение удалено администратором]

Онлайн Администратор

  • Administrator
  • Сообщений: 1637
Макрос
Sub Макрос()

    Dim arr(), time_ As Date
    Dim lr As Long, i As Long
   
   
    '1. Отключение монитора, чтобы ускорить макрос.
    Application.ScreenUpdating = False
   
    '2. Копирование столбцов A, B из листа в массив.
        ' С массивом макрос быстрее работает (если много данных), чем с эксель-ячейками.
    '1) Поиск последней строки в столбце A. Если в столбце A и в столбце B
        ' может быть разное кол-во строк, то надо использовать другой способ поиска последней строки.
        ' End не ищет в скрытых строках.
    lr = Cells(Rows.Count, "A").End(xlUp).Row
    '2) Копирование столбцов в массив.
    arr() = Range("A1:B" & lr).Value
   
    '3. Запоминаем текущее время, т.к. оно может меняться во время работы макроса.
    time_ = Time
   
    '4. Закраска.
    For i = 2 To UBound(arr)
        If time_ > arr(i, 1) Then
            If time_ < arr(i, 2) Then
                Cells(i, "B").Interior.color = 11389944
            End If
        End If
    Next i
   
    '5. Включение монитора.
    Application.ScreenUpdating = True
   
    '6. Сообщение.
    MsgBox "Готово.", vbInformation

End Sub

Оффлайн Alexandr

  • Посетитель форума
  • Сообщений: 2