Saltar al contenido

Como pausar una macro para que el usuario interactue y reanudarla


Recommended Posts

publicado

Buenos Días compañeros,

Soy nuevo en programación en VBA y estoy un poco perdido, agradeceria que me ayudarais en este tema.

Estoy creando una macro donde necesito que el usuario interactue. Es decir la macro empieza, y con un msgbox le pide al usuario que introduzca unos valores a partir de la celda C7. El usuario tiene que copiar una información que tendrá guardada donde el quiera, a partir de esta celda C7 y cuando lo del al boton acceptar del msgbox me gustaria que la macro se reanudará en el puesto donde se paro.

esto es possible?

publicado

Todo es posible, pero si no subes un archivo explicando lo que pretendes hacer exactamente, me parece que va a ser que no.

publicado

buenas antonio,

La macro realiza un resumen de unos documentos que tengo dentro de una carpeta, va abriendo cada uno de los archivos y copia siempre los mismos valores de cada archivo en una hoja nueva, pero hay alguno de estos archivos que corresponden a mas de un modulo, por eso tengo una macro que me busca las referencias y me pone X en las que afectan acada archivo abierto. Así obtengo un resumen de los valores utiles para mi.

El problema es que el usuario tiene que introducir estos modulos, y los debe copiar a partir de la C7:Cxxx, lo que quiero hacer es mandar un mensaje al usuario en el que le pido:

Msgvalue = MsgBox("Copie las referencia del modelo de calculo empezando en la celda C7 y acontinuación pulse OK", 0, "Información para el sistema")

entonces que el usuario pueda copiar o escribir los modulos y al apretar ok, la macro continue por donde estaba.

te el inicio del codigo copiado aqui, espero que pueda ayudarte:

Sub resumen_valoraciones()

Dim limpiar As String

limpiar = MsgBox("Desea limpiar el resumen de valoraciones obtenido?", vbOKCancel, "Información del sistema")

If limpiar = 1 Then

'Limpiamos la hoja "listado"

Windows("macro_resume_1").Activate

Sheets("Listado").Select

Cells.ClearContents

'Limpiamos la hoja "Resumen valoraciones"

Windows("macro_resume_1").Activate

Sheets("Resumen valoraciones").Select

Cells.ClearContents

Cells.Select

Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Selection.Borders(xlDiagonalUp).LineStyle = xlNone

Selection.Borders(xlEdgeLeft).LineStyle = xlNone

Selection.Borders(xlEdgeTop).LineStyle = xlNone

Selection.Borders(xlEdgeBottom).LineStyle = xlNone

Selection.Borders(xlEdgeRight).LineStyle = xlNone

Selection.Borders(xlInsideVertical).LineStyle = xlNone

Selection.Borders(xlInsideHorizontal).LineStyle = xlNone

ElseIf limpiar = 0 Then

End If

'Listado de Ficheros de la Carpeta, para comprobar las que tenemos que calcular y las que no

Windows("macro_resume_1").Activate

Sheets("Listado").Select

LISTA = MsgBox("Listando las valoraciones encontradas", vbOKOnly, "Información del sistema")

Dim Ruta As String

'Creamos el objeto FileSystemObject que proporciona acceso al sistema de archivos de un equipo

Set fso = CreateObject("Scripting.FileSystemObject")

'Indicamos la ruta de donde vamos a obtener los ficheros, en este la misma donde se encuentre el archivo

Ruta = ThisWorkbook.Path

'definimos dos variables que necesitaremos,para recuperar el nombre de la carpeta, y los ficheros que haya dentro

Set Carpeta = fso.GetFolder(Ruta)

Set ficheros = Carpeta.Files

'damos un título en negrita para la celda A1

With Range("A1")

.Value = "Ficheros de la carpeta"

.Font.Bold = True

End With

'escribimos los ficheros, a partir de A2

Range("A2").Select

For Each Archivo In ficheros

'escribimos el nombre del fichero

ActiveCell = Archivo.Name

'bajamos una fila

ActiveCell.Offset(1, 0).Select

Next Archivo

ActiveCell.EntireColumn.AutoFit

'Limpiamos los objetos y variables definidas

Set fso = Nothing

Set Carpeta = Nothing

Set ficheros = Nothing

Application.ScreenUpdating = True

'Definimos una pagina por introducir datos utiles para el resumen

Windows("macro_resume_1").Activate

Sheets("Datos").Select

'Dim Message As Integer

' preguntamos por el nombre generico de las modificaciones

Msgvalue = MsgBox("Copie las referencia del modelo de calculo empezando en la celda C7", 0, "Información para el sistema")

-----------------permitir que el usuario escriba!--------------------------------------------------------------------------

----------------Al pulsar ok, que siga con la macro!!!---------------------------------------------------------------------

v0 = InputBox("Introduzca el nombre de la modificación sin los ulimos dos digitos. Ej: BX_XXX_XXX_X_X", "Info para definir los Libros a abrir")

Cells(1, 1).Value = v0

' preguntamos por el rango de las modificaciones (por si llegan a 50, no calcular hasta 100)

V1 = InputBox("Introduzca el primer numero del rango de valores posible para las modificaciones ", "Info para definir los Libros a abrir")

V2 = InputBox("Introduzca el ultimo numero del rango de valores posible para las modificaciones", "Info para definir los Libros a abrir")

'v3 = InputBox("Introduzca el primer valor posible del penultimo digito del nombre de la modificación", "Info para definir los Libros a abrir")

'v4 = InputBox("Introduzca el ultimo valor posible del penultimo digito del nombre de la modificación", "Info para definir los Libros a abrir")

'For A = v3 To v4

Dim A As Long

A = V1

Dim x As Long

x = 8

Do Until A = V2

Sheets("Datos").Select

ActiveWorkbook.Sheets("DATOS").Cells(1, 2).Value = A

publicado

.

Te paso la solución a tu problema, se trata de un formulario que se comporta como un MSGBOX y que admite código antes de mostrar el mensaje y después de mostrar el mensaje, además se puede modificar la hoja mientras el mensaje está mostrado.

.

Revisa las indicaciones que he puesto en el código del formulario.

Sucedáneo de MSGBOX.xls

publicado

voy a revisarlo y te comento, muchas gracias por tu ayuda!!!! tengo que copiar hasta el msgbox pero el msgbox incluido o hasta justo antes?

publicado

Muchas gracias antonio, ya esta resuelto. Me has sido de gran ayuda!!! Hasta la proxima!!

- - - - - Mensaje combinado - - - - -

Buenas de nuevo antonio,

tengo un problemilla, la macro que he creado y en la que he implementado el userform que has creado, lista los documentos de la carpeta donde se encuentra, ahora me lista solo:

[TABLE=width: 174]

[TR]

[TD]desktop.ini

[/TD]

[/TR]

[TR]

[TD]Sucedáneo deMSGBOX.xls

[/TD]

[/TR]

[/TABLE]

entiendo que es debido a que el userform se encuentra ubicado en esta ruta. he guardado el documento en la carpeta de donde tira el listado, pero tmpoco nada. Que puedo hacer?

[TABLE=width: 174]

[TR]

[/TR]

[TR]

[TD][/TD]

[/TR]

[/TABLE]

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.