Queria pedirles ayuda en lo siguiente, quisiera que al cambiar el valor de una celda que esta dentro de un rango de una columna, por ejemplo G5:g15, se ejecutara una macro que tomara varios valores de la linea donde se este situado y envie un mail en base a esos valores, lo del mail ya lo tengo listo, me falta controlar si se ha cambiado el valor de una de las celdas en el rango G5:G15, estaba viendo las funciones ONTIME, ONREPEAT, ONKEY, pero no veo como las podria usar...
Ustedes me podrian orientar ???.. o a lo mejor seria otra funcion VBA que hay que usar..
De antemano, muchas gracias...
--
adicto
------------------------------------------------------------------------
Ver este tema: http://www.softwaremix.net/viewtopic-492904.html
Enviado desde http://www.softwaremix.net
Prueba lo siguiente:
1) Haz clic-derecho sobre el nombre de la hoja en cuestion (en una de las pestanas de la parte de abajo de la ventana de Excel).
2) Elige la opcion Ver Codigo para abrir el editor VBA.
3) Una vez en el Editor VBA, en la ventana mas grande a la derecha pega el codigo que te pongo a continuacion sustituyendo "'Aqui tu codigo..." con tus instrucciones:
'---------------------
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect([G5:G15], Target) Is Nothing Then Exit Sub
'Aqui tu codigo...
End Sub
'---------------------
4) Ahora pulsa Alt+F11 para volver a la hoja.
5) Prueba cambiar alguna celda dentro de [G5:G15]
Saludos,
KL
"adicto" <adicto...@no-mx.softwaremix.net> wrote in message news:adicto...@no-mx.softwaremix.net...
Private Sub Worksheet_Change(ByVal Target As Range)
If Selection.Interior.ColorIndex = 37 Then
datoactual = ActiveCell.Value
limiteinferior = ActiveCell.Offset(0, 1).Value
limitesuperior = ActiveCell.Offset(0, 2).Value
If datoactual < limiteinferior Then
ActiveCell.Offset(0, 4).Value = "Normal"
ActiveCell.Offset(0, 4).Interior.ColorIndex = 4
ElseIf datoactual > limitesuperior - 1 Then
ActiveCell.Offset(0, 4).Value = "Critico"
ActiveCell.Offset(0, 4).Interior.ColorIndex = 3
Else
ActiveCell.Offset(0, 4).Value = "Warning"
ActiveCell.Offset(0, 4).Interior.ColorIndex = 6
End If
If ActiveCell.Offset(0, 4).Interior.ColorIndex = 3 Then
EnviarMail
End If
End If
End Sub
---
La siguiente envia el mail...
Private Sub EnviarMail()
'Es necesario añadir la refeerncia Microsoft Outlook Library (herramientas/referencias)
Dim OutApp As Outlook.Application
Dim OutMail As Outlook.MailItem
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(olMailItem)
With ActiveCell
plataforma = .Offset(0, -4).Value
nodo = .Offset(0, -3).Value
.
.
.
.
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
Gracias....