Excel - Ejecutar una macro si se alcanza un valor

   
Vista:

Ejecutar una macro si se alcanza un valor

Publicado por Alabardero (9 intervenciones) el 28/07/2015 22:29:56
Hola,

Estoy trabajando en una macro de excel junto a un amigo. La idea es que cuando una celda concreta alcance un valor se envie un email automaticamente.
Yo no se de programación pero mi amigo si y me ha hecho la macro pero tenemos un problema en la parte que creo "facil" del asunto.

Hemos llegado hasta aqui:
Si le meto a mano el valor entonces envia el email pero si en ved de meter a mano el valor es una formula el que lo calcula no funciona. En concreto, hemos puesto que el email se enviará si la celda B7 es mayor que 5. Si en la celda B7 escribimos 100 entonces perfecto, se envia el email, pero si en esa celda pongo =SI(A8>B8;100;0), entonces nunca manda el email aunque el valor de la celda sea 100 (porque la celda A8 sería mayor que la B8).

La macro es esta
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo err
Celda = "B7"
If Application.Intersect(Target, Range(Celda)) > 5 Then
'MsgBox ("El valor es mayor que 5")
Call SendEmailUsingGmail
Else
MsgBox ("El valor es menor que 5")
End If
err:

End Sub

Sub Mail_Workbook_1()
' Works in Excel 2000, Excel 2002, Excel 2003, Excel 2007, Excel 2010, Outlook 2000, Outlook 2002, Outlook 2003, Outlook 2007, Outlook 2010.
' This example sends the last saved version of the Activeworkbook object .
Dim OutApp As Object
Dim OutMail As Object

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

On Error Resume Next
' Change the mail address and subject in the macro before you run it.
With OutMail
.To = "xxx@xxx.com"
.CC = ""
.BCC = ""
.Subject = "El valor es mayor q 5"
.Body = "Valor superado"
'.Attachments.Add ActiveWorkbook.FullName
' You can add other files by uncommenting the following line.
'.Attachments.Add ("C:\test.txt")
' In place of the following statement, you can use ".Display" to
' display the mail.
.Send
End With
On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing
End Sub

Mas abajo viene la parte de enviar el email pero esa parte funciona.

No se si alguien nos puede ayudar.
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ejecutar una macro si se alcanza un valor

Publicado por GMG (105 intervenciones) el 29/07/2015 13:52:26
Lo de Application.Intersect(Target, Range(Celda)) la verdad que no sé muy bien cómo va, y lo mismo digo ahora una tontería pero creo que te coge lo de dentro de la celda, y lo que os interesa es el valor, no la fórmula.

Mirar así:

1
2
3
4
5
6
If Cells(7, 2).Value > 5 Then
    'MsgBox ("El valor es mayor que 5")
     Call SendEmailUsingGmail
     Else
     MsgBox ("El valor es menor que 5")
End If

En lugar de:

1
2
3
4
5
6
7
Celda = "B7"
If Application.Intersect(Target, Range(Celda)) > 5 Then
'MsgBox ("El valor es mayor que 5")
Call SendEmailUsingGmail
Else
MsgBox ("El valor es menor que 5")
End If


espero que os sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ejecutar una macro si se alcanza un valor

Publicado por Alabardero (9 intervenciones) el 29/07/2015 18:27:31
Muchas gracias,
Ayer a la noche ya encontré .VALUE para indicar que nos referimos al valor. De todas formas ahora la parte de enviar el email también falla y no se porque. Debe de ser algo de la configuración porque en otra oficina nos funcionaba muy bien (eso sí, al meter el dato a mano, si había fórmula no funcionaba, y que con tu ayuda lo superamos).
Otra vez muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar