Elegir una macro o otra con un botón y según condición

Solo consultas sobre macros y código VBA Excel.

Reglas del Foro
1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!
Compartir en:
     

Elegir una macro o otra con un botón y según condición

Notapor raul7733 » 29 Dic 2011 19:52

Tengo dos macros en dos botones, cada uno de ellos me descarga unos valores de celda en un libro o en otro según una elección que le doy yo y quería unificar a un sólo botón que según mi elección eligiera una macro o la otra para transferir esos resultados a uno de los dos libros. Alguien me puede poner un ejm para ayudarme. Gracias.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
raul7733
Miembro Frecuente
Miembro Frecuente
 
Registrado: 08 Nov 2010 09:18

Re: Elegir una macro o otra con un botón y según condición

Notapor Héctor Miguel » 29 Dic 2011 23:08

hola, raul !

puedes ejecutar varias macros (o sub-rutinas) desde una principal detectando si la ejecucion se realiza combinando algunas teclas con el apoyo de algunas llamadas a las API's (p.e.)
Código: Seleccionar todo
' otbenemos el estado (pulsada o no) de la tecla "pasada" como argumento "vKey" '
Private Declare Function TeclaPulsada _
  Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer

' usamos la llamada anterior para preguntar por el estado de 2 teclas (Shift y Control) '
Private Function Teclas() As Integer
  Dim Pulsadas As Integer, May As Boolean, Ctrl As Boolean
  May = (TeclaPulsada(vbKeyShift) And &H8000)
  Ctrl = (TeclaPulsada(vbKeyControl) And &H8000)
  Pulsadas = Pulsadas - May
  Pulsadas = Pulsadas - (Ctrl * 2)
  Teclas = Pulsadas
End Function

' la siguiente macro de prueba te dira cual(es) tecla(s) presionas al momento de ejecutarla '
Sub ProbandoTeclas()
  Dim CualTecla As String
  Select Case Teclas
    Case 0: CualTecla = "más vale solo... que mal acompañado."
    Case 1: CualTecla = "pulsando la tecla Mayúsculas."
    Case 2: CualTecla = "pulsando la tecla Control."
    Case 3: CualTecla = "pulsando las teclas Mayúsculas y Control"
  End Select
  MsgBox "Este código se está ejecutando ..." & vbCr & CualTecla
End Sub

solo necesitas cambiar los Case (0 a n) por las llamadas a las sub-rutinas apropiadas

si requieres verificar mas (u otras) teclas, pregunta por ellas en la funcion "Teclas"
=> OBSERVA como se acumulan (o suman) las teclas solicitadas ...
al preguntar (solamente) por dos teclas, debo esperar CUATRO (posibles) resultados (0 a 3):
0 = Ninguna pulsada
1 = SOLO la primera
2 = SOLO la segunda
3 = AMBAS (la suma de 1 + 2)

si necesitaras preguntar por TRES teclas, las (posibles) combinaciones serian OCHO (0 a 7)
0 = NINGUNA
1 = SOLO la primera
2 = SOLO la segunda
3 = LAS DOS PRIMERAS (la suma de 1 + 2)
4 = SOLO la tercera
5 = la primera CON la tercera (la suma de 1 + 4)
6 = la segunda CON la tercera (la suma de 2 + 4)
7 = LAS TRES (la suma de 1 + 2 + 4)

saludos,
hector.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Héctor Miguel
Miembro Frecuente
Miembro Frecuente
 
Registrado: 26 Mar 2005 18:31

Re: Elegir una macro o otra con un botón y según condición

Notapor raul7733 » 30 Dic 2011 05:05

Hola Hector,
Antes de nada gracias por prestarme un rato de tu tiempo. La verdad es que me parece muy interesante tu aportación pero quizás lo que busco es más simple. Tengo dos macros y un cuadro combinado que va desde el 1 al 7 , necesito que si en una celda por ejm AG9 aparece el 4 siga una macro y otro número la otra macro.
No se si ayuda mucho mi explicación.
Gracias
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
raul7733
Miembro Frecuente
Miembro Frecuente
 
Registrado: 08 Nov 2010 09:18

Re: Elegir una macro o otra con un botón y según condición

Notapor raul7733 » 30 Dic 2011 07:04

Pongo un ejemplo
No tiene los permisos requeridos para ver los archivos adjuntos a este mensaje.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
raul7733
Miembro Frecuente
Miembro Frecuente
 
Registrado: 08 Nov 2010 09:18

Re: Elegir una macro o otra con un botón y según condición

Notapor Héctor Miguel » 30 Dic 2011 20:50

hola, raul !
... lo que busco es más simple. Tengo dos macros y un cuadro combinado que va desde el 1 al 7 , necesito que si en una celda por ejm AG9 aparece el 4 siga una macro y otro número la otra macro.

solo necesitas una nueva macro que haga uso de las existentes dependiendo del valor en la celda [AG9], p.e.
Código: Seleccionar todo
Sub Cual_Macro()
  If Worksheets("control cm").Range("ag9") = 4 _
    Then Transferir_Datos_UVA _
    Else Transferir_Datos_Control
End Sub

saludos,
hector.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
Avatar de Usuario
Héctor Miguel
Miembro Frecuente
Miembro Frecuente
 
Registrado: 26 Mar 2005 18:31

Re: Elegir una macro o otra con un botón y según condición

Notapor raul7733 » 30 Dic 2011 21:25

Hasta el año próximo (El lunes pero suena raro) no podré verificar que va bien pero las pruebas que he realizado en casa me dan OK, así que, mil gracias amigo. Una cosa que parece tan fácil y no sabía como hacer que funcionara y lo has solucionado con 5 lineas.
Gracias de nuevo
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
raul7733
Miembro Frecuente
Miembro Frecuente
 
Registrado: 08 Nov 2010 09:18

Re: Elegir una macro o otra con un botón y según condición

Notapor raul7733 » 02 Ene 2012 09:25

Bien, funciona a la perfección, gracias Héctor. Incluso la he utilizado para otra cosa, sólo una última pregunta. Se me ocurre que puedo dar más utilidad a la forma de selección de macros, partiendo de tu información, pero desconozco como hacerlo.

P.e. si tengo la celda [AG9] con valor 4 lanza la macro: Transferir_Datos_UVA
Con valor 3 la macro: Transferir_Datos_Control
Con valor 5 la macro: Transferir_Datos_Posicion
Etc...

¿Es esto posible?
Gracias de nuevo.
* Te recomendamos estos productos Excel: Manual de Macros | Manual de Funciones | Nuevas Funciones | ddTraDa
raul7733
Miembro Frecuente
Miembro Frecuente
 
Registrado: 08 Nov 2010 09:18


Compartir en:
     

  • Anuncio
Manual Excel avanzado

Volver a Macros

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados