Страницы: 1
RSS
Макрос на блокировку ячеек в каждой строке по дате, Создать макрос на блокировку ячеек в каждой строке в зависимости от даты
 
Добрый день!


Есть таблица (вложение). Необходим макрос, который будет блокировать ячейки в зависимости от даты.

Суть вопроса:

На листе "База" ежесуточно сотрудниками
предприятия заполняется информация.

Придя на работу в столбец А:А ставят дату и правее
в столбцы В:J вносят информацию.

Необходим макрос который будет блокировать
изменение не пустых ячеек на листе "База" и только тех в строках
которых дата из столбца А:А  менее двое суток от даты на сегодня. То есть
допустим сегодня число 12.09.2024 г, макрос должен заблокировать ячейки A2:J36 (выделил шрифт темно красным цветом).

Прошу помощи.
 
Здравствуйте.
Чат GPT выдал такой код по вашим условиям.
На пробном листе сработал.
Код
Sub BlockRedFontCells()
    Dim ws As Worksheet
    Dim cell As Range
    Dim today As Date
    Dim twoDaysAgo As Date
    Dim lastRow As Long
    Dim rowRange As Range
    
    ' Устанавливаем рабочий лист
    Set ws = ThisWorkbook.Sheets("База")
    
    ' Получаем текущую дату
    today = Date
    twoDaysAgo = today - 2
    
    ' Находим последнюю непустую ячейку в столбце A
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
    ' Сначала разблокируем все ячейки
    ws.Unprotect Password:="ваш_пароль" ' Установите свой пароль
    ws.Cells.Locked = False
    
    ' Проходим по диапазону A2 до последней непустой ячейки
    For Each cell In ws.Range("A2:A" & lastRow)
        ' Проверяем, если дата в ячейке меньше двух суток от сегодняшней
        If Not IsEmpty(cell) Then
            If cell.Value <= twoDaysAgo Then
                ' Определяем диапазон всей строки
                Set rowRange = ws.Range(cell, cell.Offset(0, 9)) ' A:J
                
                ' Меняем цвет шрифта на темно-красный для всей строки
                rowRange.Font.Color = RGB(139, 0, 0) ' Темно-красный цвет
                
                ' Блокируем всю строку, если шрифт красный
                If rowRange.Font.Color = RGB(139, 0, 0) Then
                    rowRange.Locked = True
                End If
            End If
        End If
    Next cell
    
    ' Защита листа
    ws.Protect Password:="ваш_пароль" ' Установите свой пароль
End Sub
 
От души большое спасибо! Все четко работает, как часы.
Страницы: 1
Наверх