Encadenamiento de varios MsgBox

Mi consulta se refiere a cómo encadenar dos MsgBox. Deseo ejecutar una macro (Copia1º) después de activar una celda determinada, y después si la celda T70 >1 entonces saltará otro MsgBox para indicarme que active una celda en donde se ejecutará la macro Copia2º, de lo contrario finalizará todo después de la macro Copia1º..

Éste es la secuencia que he realizado, pero que no me permite elegir las dos celdas cuando sale el mensaje correspondiente de los dos MsgBox. Al aceptar el primer MsgBox me salta el segundo MsgBox, sin ejecutarse la macro Copia1º.

Sub Traspasos()
Call introducir_datos
MsgBox ("SEÑALA LA CELDA DONDE SE SITUARÁ EL 1º TRASPASO")
Call Copia1º
If ActiveSheet.Range("T70").Value > 1 Then
MsgBox ("SEÑALA LA CELDA DONDE SE SITUARÁ EL 2º TRASPASO")
Call Copia2º
Else
End If
End Sub

Gracias

1 Respuesta

Respuesta
1

Esta sería una opción

Cambia esta línea

MsgBox ("SEÑALA LA CELDA DONDE SE SITUARÁ EL 1º TRASPASO")

Por estas

Celda = InputBox("ESCRIBE LA CELDA DONDE SE SITUARÁ EL 1º TRASPASO")
Range(celda).Select

Deberás escribir una celda, por ejemplo C5 y presionar enter

Saludos. Dam

Si es lo que necesitas.

La solución propuesta, señala la celda que le indico pero no me ejecuta la macro Copia1º y salta al segundo mensaje.

Gracias.

Tendría que ver qué tienes en tu macro Copia1, para saber porqué no se ejecuta. Puedes ponerla o bien, envíame todo tu archivo con todo y macros.

Mi correo [email protected]
En el asunto escribe tu nombre de usuario y el título de esta pregunta.

Éstas son las macros que se deben ejecutar:

Sub Copia1º()
Range("R67:R104").Select
Application.CutCopyMode = False
Selection.Copy
Application.DisplayAlerts = False
ActiveSheet.Paste
End Sub

Sub Copia2º()
Range("T67:T104").Select
Application.CutCopyMode = False
Selection.Copy
Call PararHastaSeleccionarCelda
Application.DisplayAlerts = False
ActiveSheet.Paste
End Sub

Gracias

Disculpa, la linea

Call PararHastaSeleccionarCelda

no es válida.

Gracias

ya te he enviado el correo.

Gracias

Pero tu lógica no es la correcta, o no entiendo bien qué es lo quieres hacer.

Lo que quieres es:

1. Seleccionar el lugar donde se va a pegar este rango ("R67:¿R104")?

2. Pero si primero seleccionas una celda y luego en la macro copia1 escribes Range("R67:R104"). Select, la primera selección se pierde

3. La macro copia1 se ejecuta pero copia el rango ("R67:R104") en el mismo lugar

Si quieres continuar con esa lógica, tendrás que decirle a copia1 en dónde quieres pegar.

Cambia esta línea

Call Copia1º

Por esta

Call Copia1º(celda)

Y en la macro Copia1º

cambia tu macro por esta

Sub Copia1º(celda)
Range("R67:R104").Select
Application.CutCopyMode = False
Selection.Copy
Application.DisplayAlerts = False
Range(celda).Select
ActiveSheet.Paste
End Sub

Saludos. Dam
Si es lo que necesitas.

Me parece que no me he explicado bien. Disculpa. El orden es al contrario: El rango R67:R104 ya está seleccionado previamente. Aparece el primer mensaje elijo la celda y al dar intro se pega el rango anterior (macro Copia1º). Lo mismo me estoy liando un poco y no explico con claridad.

Gracias

Ya está solucionado. Simplemente he cambiado el orden de la secuencia y he puesto, antes del mensaje, seleccionar el rango y copiar.

Gracias por todo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas