Disparar macro solamente una vez

Hola Elsamatilde, necesito de tu ayuda nuevamente. Hace rato me ayudaste con una macro para mandar correos desde excel, pero lo que quiero ahora es que si se cumple la condición de una celda, entonces mande el correo, pero el problema que tengo es que se sigue ejecutando la macro, lo que quiero es que mande solamente una vez el correo al cumplirse la condición. Ejemplo, si la celda F5 dice "cerrado", se ejecute la macro y mande un correo en específico, pero una sola vez, aunque siga diciendo "cerrado" o cambie a "abierto", y cuando vuelva a marcar "cerrado", vuelva a mandar el correo, y ésta condición va a pasar en otras celdas, (aprox. 12 celdas).
Te mando la macro de la rutina del correo que me hiciste el gran favor de ayudarme.
Sub Macro26()
'
' Macro1 Macro
'
Dim myOLApp
Dim myOLItem
Dim midire, miasunto, miRuta, mitexto As String
'datos del mail a enviar
midire = ActiveSheet.Range("H32").Value
miasunto = ActiveSheet.Range("H1").Value
mitexto = ActiveSheet.Range("H2").Value
'se crea un objeto Outlook, Mail
Set myOLApp = CreateObject("Outlook.Application")
Set myOLItem = myOLApp.CreateItem(olMailItem)
'se establecen los campos del mensaje
With myOLItem
'campo A o Para
.to = midire
'campo Asunto
.Subject = miasunto
'cuerpo del mensaje
.body = mitexto
'enviar
.Send
End With
'se liberan las variables creadas
Set myOLApp = Nothing
Set myOLItem = Nothing
End Sub
De antemano muchas gracias y saludos.

1 Respuesta

Respuesta
1
¿Por qué se ejecuta más de 1 vez?
Esta macro debiera estar en un módulo, y ejecutarse cuando la celda tome el valor 'cerrado', es decir que en el evento Worksheet_Change debieras colocar estas instrucciones:
Private Sub Worksheet_Change(ByVal Target As Range)
'controla la celda F5
If Target.Address(False, False) = "F5" Then
'si toma el valor cerrado se ejecutará la rutina 1 vez
If Target.Value = "cerrado" Then
macro26 'nombre de la macro ubicada en módulo
End If
End If
End Sub
Saludos y comentame cómo se resolvió
Si esto no
Muchas gracias por tu ayuda Elsa.
Disculpame no haber contestado enseguida, pero tenía problemas con mi internet, pero ya quedó. Enseguida la pongo en práctica. Muchísimas gracias.
Saludos.
Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas