Si querés que se ejecute al abrir el libro, colocá este código en el evento Open del mismo:
Private Sub Workbook_Open()
Call buscaVtos
End Sub
Si querés que se ejecute al entrar a la Hoja2, colocalo en el evento Activate de la Hoja:
Private Sub Worksheet_Activate()
Call buscaVtos
End Sub
Y en un módulo colocá la siguiente macro. Estoy evaluando el día actual con el formato de las fechas que aparecen en el texto de los cuadros.
Sub buscaVtos()
'x Elsamatilde
Dim mensa As String
Dim canti As Byte
Dim i As Integer
'recorre col G de la Hoja2, evaluando si contiene fecha del día actual
mensa = "Hoy se vencen los siguientes Exp.: "
With Sheets("Hoja2")
For i = 3 To .Range("G" & Rows.Count).End(xlUp).Row
If InStr(1, .Range("G" & i).Value, Format(Date, "dd/mm/yyyy")) > 0 Then
mensa = mensa & .Range("A" & i) & " "
canti = 1
End If
Next i
End With
If canti > 0 Then MsgBox mensa
End Sub
De este modo no necesitas modificar la macro ante cada cambio de día.
Pero, si en lugar de comparar con el día actual, quisieras comparar con la fecha ubicada en alguna celda, reemplaza Date por el rango de la celda, por ej.: Range("B2")
* Recomiendo estos videos de mi canal:
Nº 45 al 48 : Eventos de Hojas y de Libro.
Nº 56: uso de la función INSTR
Sdos!