Como saco el valor de una celda para una variable

Tengo un formato y al llegar a una celda tengo una validación de datos con una lista.
Mis preguntas:
Como mando llamar el evento al momento de seleccionar un valor de mi lista, por que a partir de ahí le mandare un correo al usuario seleccionado (ya tengo la lista de correos de usuarios),
como hago para poder tomar el valor de la celda y partirlo para meterlo en una variable y que así pueda tomar valores de varias celdas que necesito enviar en el cuerpo del correo
y por ultimo como agrego un mensaje al cuerpo del correo si ya tengo un rango de celdas que sale en el cuerpo.
El código que he revisado y tengo es este pero esta fijo a un rango y a un solo usuario.
Sub Send_Range()
" Select the range of cells on the active worksheet.
"ActiveSheet.Range("A1:B5").Select
" Show the envelope on the ActiveWorkbook.
ActiveWorkbook.EnvelopeVisible = True
" Establece el campo de introducción optativa de la cabecera del mensaje.
" Asimismo, establece la líneas A y Asunto.
" Por último, el mensaje es enviado.
With ActiveSheet.MailEnvelope
.Item.To = "[email protected]"
.Item.cc = "[email protected]"
.Item.Subject = ActiveSheet.Range("d8").Value
" Compose the message
.Item.body = "Se le envía la siguiente información para que le de seguiemiento a dicho oficio"
.Item.body = body & ActiveSheet.Range("c8:f8").Select
.Item.Send
End With
End Sub
Pero el mensaje del cuerpo no sale, gracias y espero que me puedan ayudar

1 Respuesta

Respuesta
1
TE responderé algunos puntos para que puedas avanzar. Si luego necesitas alguna otra ayuda me enviás una nueva consulta.
1- Para que una rutina se ejecute al momento de seleccionar una celda, la tenés que colocar en el evento Worksheet_SelectionChange
Es decir, que al entrar al Editor, seleccioná, del panel a tu izquierda, con doble clic la hoja donde tengas estos datos y allí escribí algo como esto:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
call enviomail
End Sub
En algún módulo tendrás la rutina que empezará con:
Sub enviomail()
'---
End Sub
2- Tomar el valor de 1 celda y partirlo.. no entendí.
3- El cuerpo del mensaje está aproximado, no tenés que seleccionar la celda sino tomar su valor. Reemplazá Select por Value
Item.body = "Se le envía la siguiente información para que le de seguiemiento a dicho oficio"
.Item.body = body & ActiveSheet.Range("c8:f8").Value
Aquí fíjate si no debieras tomar cada celda por separado, salvo que la tengas combinada.
Elsa muchas gracias lo intentare y te diré como voy, a lo que me refería de partir la celda es que al seleccionarla tendré que tomar algunos valores de esa fila así es que por eso necesito el valor de la fila ya que el de la columna es un valor fijo mientras que el de la fila es la variable, por eso necesito saber como dividirlo para tomarlo como variable, nuevamente muchas gracias y te tengo al corrinete de como esta mi formato.
Estas instrucciones pueden servirte:
fila = Activesheet.Row    'así se obtiene la fila de la celda activa, por ej,
Cells(fila, col) : así se hace referencia a una celda cuya fila es variable, también se puede variar la columna o dejarla fija con Cells(fila, 1) por ej para la col A
Sdos
Elsa
Elsa me encanto esa sentencia de Worksheet_SelectionChange(ByVal Target As Range) ya que automatiza mi código de inmediato, lo malo es que al tocar cualquier celda se activa y yo solo requiero que se haga al momento de que seleccione un valor de una lista que cree por medio de la validación de datos, así es que lo que necesito es que sea al momento que la selección sea de estos elemento y a partir de dicho elemento que extraiga la dirección de correo, la cual esta en una celda contigua a donde se toma el valor para la lista. Perdón por la lata
Claro, era un dato que faltaba y falta aún, cuál es la celda o celdas donde debe actuar el evento.
Además entiendo ahora, que no es al momento de seleccionar la celda sino de seleccionar un valor, entonces el evento es otro, es Change:
Private Sub Worksheet_Change(ByVal Target As Range)
if target.address(false, false) = "B5" then     'ajustá a tu celda

call enviomail
end if
End Sub
Pues mira ELSA he seguido tus indicaciones y si algunas cosas están saliendo pero si ando perdido, como deje de proogramar más de 8 años ahora no me acuerdo ni de como me llamo. Pero no se como podría mandarte el archivo para que lo vieras.
Te vuelvo a comentar a grandes rasgos es un control de oficios, en el cual se cargan los documentos que llegan y detalle es que al momento de elegir quien los atienda debe de salir un correo en automático dependiendo del usuario con titulo igual al asunto que ya se capturo y con todas las celdas anteriores a este campo desde la c hasta la f, variando en cada fila.
Espero que con esto ya pueda ser más claro lo que necesito por que ando totalmente perdido, gracias nuevamente
El correo lo encontrarás en mi sitio (o dejame el tuyo aquí) así trabajo sobre tu modelo directamente.
Sdos
Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas