Я использую следующий код для заполнения окна сообщения при вводе сегодняшней даты в ячейку H3. Проблема в том, что окно сообщения появляется на каждом листе. Я хочу, чтобы он был только на листе, в который я помещаю код (в данном случае "Лист1"), и я хочу, чтобы сообщение продолжало появляться до тех пор, пока не будет удалена дата. Пожалуйста помоги!

Sub Worksheet_Calculate()
Dim myMessage As String

    myMessage = ""

    If Range("H3").Value = Date Then
        If (myMessage <> "") Then myMessage = myMessage & vbCrLf
        myMessage = myMessage & "You have a new message. Delete the date next to the message box to acknowledge this message."

    End If

    If (myMessage <> "") Then MsgBox (myMessage)

End Sub

1 ответ1

0

Я бы сделал так, чтобы создать макрос с подпрограммой, которую вы создали, и затем вызвать ее из события Worksheet_Change на рабочем листе, с которым вы работаете.

Сначала: создайте макрос (Разработчик> Макросы)

Далее: поместите ваш код в макрос, добавив переменную для передачи имени листа.

Sub Worksheet_Calculate(SheetName as String) 
Dim myMessage As String

myMessage = ""

If Sheets(SheetName).Range("H3").Value = Date Then
If (myMessage <> "") Then myMessage = myMessage & vbCrLf
    myMessage = myMessage & "You have a new message. Delete the date next to the message box to acknowledge this message."

End If

If (myMessage <> "") Then MsgBox (myMessage) 
End Sub

Наконец: вернитесь к книге и щелкните правой кнопкой мыши на вкладке листа. Выберите View Code и добавьте подпрограмму Worksheet_Activate(), которая вызывает подпрограмму, созданную в макросе (передавая имя листа в качестве параметра).

Private Sub Worksheet_Activate()
    Worksheet_Calculate "Sheet1" 
End Sub

Теперь, единственное время, когда появится окно сообщения, это если назначенная ячейка на указанном листе содержит назначенные данные.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .