Я новичок в написании кода VBA, но мне удавалось бороться за последние пару недель.Как AutoUpdate, поскольку каждый день проходит условный формат, основанный на дате?
Я создал код для события изменения рабочего листа, который выдвигает на первый план ввода в определенные сроки в отдельных окнах, как так:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim icolor As Integer
Dim cell As Range
If Intersect(Target, Range("C3:T65")) Is Nothing Then Exit Sub
For Each cell In Target
icolor = 0
Select Case cell
Case "": icolor = 2
Case Is <= Date + 30: icolor = 3
Case Is <= Date + 60: icolor = 6
Case Is > Date + 60: icolor = 2
End Select
If icolor <> 0 Then cell.Interior.ColorIndex = icolor
Next cell
End Sub
Он работает безупречно. Тем не менее, мне нужна электронная таблица, чтобы в основном обновлять подсветку каждый день. IE: Если дата + 61 не подсвечена сегодня, она будет подсвечена завтра, потому что она подходит для окна как Дата + 60. Я подозреваю, что простое событие изменения рабочего листа не может этого сделать (потому что для этого требуется ввод пользователя).
Я попытался настроить это на листе активировать код, чтобы потенциально обновлять блики при открытии документа (и я стараюсь, чтобы книга не открывалась, потому что у меня будет несколько листов, делающих разные вещи), но я не могу заставить его работать. Любые идеи о том, что я делаю неправильно? Или есть лучший способ добиться того, что я пытаюсь сделать?
Спасибо заранее.
Private Sub Worksheet_Activate()
Dim icolor As Integer
Dim cell As Range
If Intersect(Target, Range("C3:T65")) Is Nothing Then Exit Sub
For Each cell In Target
icolor = 0
Select Case cell
Case "": icolor = 2
Case Is <= Date + 30: icolor = 3
Case Is <= Date + 60: icolor = 6
Case Is > Date + 60: icolor = 2
End Select
If icolor <> 0 Then cell.Interior.ColorIndex = icolor
Next cell
End Sub
Что означает «Я» в вашем коде? – user2214690
Когда VBA работает в модуле кода листа (или в любом экземпляре класса), 'Me' относится к листу, к которому подключен этот модуль. Вам не нужно менять его (например, «Лист1»). На самом деле, более надежно оставлять его как «Я»: тогда, если вы измените кодовое имя листа, ничего не сломается ... –
Я обновил код. Есть ли способ проверить, правильно ли он обновляется, не дожидаясь завтра? Я заставил даты быть неправильно (вручную) выделенными, а при открытии/закрытии они остаются неправильно выделенными. Я также вынужден изменить дату моей системы на компьютере, который ничего не изменил. – user2214690