SUSPENDER LA EJECUCION DE UN MACRO

14/02/2004 - 23:29 por jjjgarcia1 | Informe spam
Hola a todos:
Tengo un pequeño problema y es el siguiente: necesito detener un macro
para introducir un dato en una celda o poder desplazarme por la hoja.
Me explico tengo un libro con tres hojas, hoja1, hoja2, hoja3, en
las hojas uno y dos introduzco datos, en la tercera muestro los datos
de las hojas, unas veces seran los de la uno y otras las de la dos.
Ejecuto un macro para copiar las celdas de las hojas, pero necesito
poder editar la celda que quiero copiar, por ejemplo si en la cenda
tengo =+Hoja1!B8, necesito editar la celda para poder poner
=+Hoja2!B8, y continuar la macro, en otra ocasion puede ser a la
inversa o cualquier otra hoja.

Espero no haberme enrrollado mucho y haceros un lio a todos, se que en
Lotus hay unos mandatos que son interactivos, que suspenden la
ejecucion de un macro para permitir al usuario desplazar el indicador
de celda o introducir datos, una vez que se pulsa enter la macro
continua.

Muchas gracias por adelantado

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
15/02/2004 - 00:27 | Informe spam
hola, jjjgarcia !

... se que en Lotus hay ... mandatos ... interactivos ... suspenden ... macro ... permitir al usuario [...]



seguramente entontraras lo que necesitas en: http://j-walk.com/ss/excel/tips/tip81.htm

saludos,
hector.
Respuesta Responder a este mensaje
#2 jjjgarcia1
15/02/2004 - 16:48 | Informe spam
Gracias Hector, pero no es esto exactamente lo que busco, en este
ejemplo lo que hace es poder elejir la celda donde introduces el dato,
lo que yo quiero es pausar la macro para editar la celda, o en su
defecto que me pregunte que quiero introducir en la celda.

Un saludo
Respuesta Responder a este mensaje
#3 Fernando Arroyo
15/02/2004 - 18:06 | Informe spam
Si he entendido lo que necesitas, quizás te sirvan las siguientes instrucciones:

Dim strFórmula As String
strFórmula = Worksheets("Hoja1").[A1].FormulaLocal
strFórmula = Application.InputBox("Introduzca la fórmula para Hoja1!A1: ", Default:=strFórmula, Type:=0)
Worksheets("Hoja1").[A1].Formula = strFórmula

en el código anterior la celda cuya fórmula se edita es A1 de Hoja1.
Un saludo.


Fernando Arroyo
MS MVP - Excel

"jjjgarcia1" escribió en el mensaje news:
Gracias Hector, pero no es esto exactamente lo que busco, en este
ejemplo lo que hace es poder elejir la celda donde introduces el dato,
lo que yo quiero es pausar la macro para editar la celda, o en su
defecto que me pregunte que quiero introducir en la celda.

Un saludo
Respuesta Responder a este mensaje
#4 Héctor Miguel
16/02/2004 - 08:56 | Informe spam
jjjgarcia escribio
... no es esto exactamente lo que busco
... este ejemplo lo que hace es poder elejir la celda donde introduces el dato,
... yo quiero pausar la macro para editar la celda, o en su defecto que me pregunte que quiero introducir en la celda.

Fernando Arroyo escribio
Si he entendido lo que necesitas, quizas te sirvan las siguientes instrucciones:
Dim strFórmula As String
strFórmula = Worksheets("Hoja1").[A1].FormulaLocal
strFórmula = Application.InputBox("Introduzca la fórmula para Hoja1!A1: ", Default:=strFórmula, Type:=0)
Worksheets("Hoja1").[A1].Formula = strFórmula
en el codigo anterior la celda cuya formula se edita es A1 de Hoja1.





como bien lo dices... es 'solamente' un ejemplo... [tu requerimiento NO 'tiene porque' ser 'exactamente igual'] :))
[ya Fernando te apunta en una direccion para 'hacerle adaptaciones']

ahora... si como dices en tu mensaje 'original'...
__________
... necesito detener un macro para introducir un dato en una celda o poder desplazarme por la hoja [...]
... libro con tres hojas, hoja1, hoja2, hoja3 ... unas veces seran los de la uno y otras las de la dos [...]
... necesito poder editar la celda que quiero copiar [...]
... si en la cenda tengo =+Hoja1!B8 ... poder poner =+Hoja2!B8, y continuar la macro [...]
... en otra ocasion puede ser a la inversa o cualquier otra hoja


¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
y lo que requieres es que el usuario 'interactue' [en la interfase grafica de la aplicacion] con la macro ... [p.e.]
=>seleccionando la hoja y celda<= a la que se le cambiara una formula =>que 'hace' referencia a otra hoja y celda<'otra' manera de 'adaptar' el ejemplo seria la siguiente
[y 'aprovecho' para 'prevenir' algunos 'horrores involuntarios' => faltaria 'prevenir' si se seleccionan varias celdas <=]
=> o podrias 'combinarla' con la propuesta de Fernando <= ;)
___
Sub SeleccionarCelda_Cambiar_Referencia()
Dim Destino As Range, Origen As Range
On Error Resume Next
Iniciar:
Set Destino = Application.InputBox("Selecciona la celda a modificar", Default:=ActiveCell.Address, Type:=8)
If Destino Is Nothing Then GoTo Fin
Set Origen = Application.InputBox("Selecciona la celda a mostrar", Default:=ActiveCell.Address, Type:=8)
If Origen Is Nothing Then GoTo Fin
If Origen.Address(External:=True) = Destino.Address(External:=True) Then
MsgBox "¡ No se debe seleccionar la misma referencia en ambas preguntas !!!": GoTo Iniciar
End If
Destino.Formula = "=" & Origen.Address(External:=True)
Fin:
Set Origen = Nothing
Set Destino = Nothing
End Sub
¨¨¨¨¨¨
saludos,
hector.

p.d. solo comentar que para que el usuario interactue en la interfase grafica [similar a los comandos interactivos de lotus]
el 'Application.InputBox' NO es lo mismo que el 'InputBox' de vba
el de vba 'solamente' solicita informacion al usuario :((
el de la aplicacion... 'le permite' [p.e. como lo solicitas] =>desplazarse<= por la hoja y el libro :))
el argumento 'Type' [tipo de datos] que 'espera recibir' del usuario son:
0 = una formula => que 'pudiera' ser un 'simple' ="" <= [por un 'horror... involuntario' ???] :((
1 = un numero
2 = un texto
4 = un valor logico (True o False)
8 = una referencia de celda o rango
16 = un valor de error [p.e.. #N/A]
64 = una matriz de valores
Respuesta Responder a este mensaje
#5 jjjgarcia1
16/02/2004 - 11:32 | Informe spam
Muchas gracias Fernando, esto es lo que busca...hasta otra
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida