Макрос MSG на листе изменяется, если значение смещения = ИСТИНА - PullRequest
0 голосов
/ 18 октября 2019

Я хотел бы отобразить сообщение, если ячейка формулы в столбце I:I меняется на TRUE после изменения ячейки в столбце D:D.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim myRange As Range

myRange = Range("D:D")

If Intersect(myRange, Target) Then

    If Target.Offset(0, 3).Value = True Then MsgBox "Date Range and Holiday Type Mismatch"

End If

End Sub

Это примерТаблица. В основном я буду обновлять столбец D:D с типом праздника. В столбце I:I ячейка изменится на ИСТИНА, если диапазон дат неприемлем. Если ячейка в столбце I:I изменится на ИСТИНА, я хочу, чтобы окно сообщения отображалось.

enter image description here

1 Ответ

1 голос
/ 18 октября 2019

Хорошая попытка запуска, но есть несколько проблем, включая необходимость Set при работе с Range объектами и смещение, которое кажется ... выключенным.

Вот один из подходов:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim myRng As Range
    Set myRng = Intersect(Target, Me.Columns("D:D"))

    If myRng Is Nothing Then Exit Sub

    Dim myCell As Range
    For Each myCell In myRng
        If Me.Cells(myCell.Row, "I").Value = True Then
            MsgBox "Date Range and Holiday Type Mismatch"
        End If
    Next
End Sub
...