1. Esta comunidad utiliza cookies. Si continuas utilizando nuestra comunidad estás aceptando la utilización de nuestras cookies. Más información.
  2. ¡Bienvenid@ a AyudaExcel! El foro más visitado sobre Excel en habla hispana.

    Si esta es tu primera visita, asegúrate de revisar los temas de la sección Utilización y Funcionamiento para familiarizarte con las funciones del foro. Si deseas publicar mensajes, será necesario que te Registres para que puedas dejar respuestas y crear tus propios mensajes, recuerda que es gratuito.

Boton para minimizar ventanas!!!

Tema publicado en 'Macros y programación VBA' iniciado por **soulmatez**, 5 May 2010.

  1. **soulmatez**

    **soulmatez** Usuario

    Reg:
    11 Mar 2010
    Mensajes:
    41
    Me Gusta recibidos:
    0
    Hola amigos, mi consulta es si es que se pueden crear botones para minimizar al lado de la x de salir, noc realmente como se hace y si es que se puede hacer...

    se los agradeceria...

    saludoz!!!
    exito!!!
     
  2. avalencia

    avalencia Usuario

    Reg:
    21 Ago 2008
    Mensajes:
    565
    Me Gusta recibidos:
    5
    Pero, ¿Crearlas en donde? ¿Sera en un userform?

    Abraham
     
  3. **soulmatez**

    **soulmatez** Usuario

    Reg:
    11 Mar 2010
    Mensajes:
    41
    Me Gusta recibidos:
    0
    sipz, crearlas en un userform...he visto codigos, pero quiero entender como se hace, no llegar y copiar...
     
  4. avalencia

    avalencia Usuario

    Reg:
    21 Ago 2008
    Mensajes:
    565
    Me Gusta recibidos:
    5
    Ya. Mira, pega todo esto en el modulo del Userform:

    'Code to add a miminise and maximise button to a VBA userform
    'Daniel Klann 13th June 2002

    'Windows API functions we need to use to achieve this
    Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long

    'Constants used within the API functions above
    Private Const WS_MINIMIZEBOX As Long = &H20000
    Private Const WS_MAXIMIZEBOX As Long = &H10000
    Private Const GWL_STYLE As Long = (-16)


    Private Sub UserForm_Initialize()
    Dim lngMyHandle As Long, lngCurrentStyle As Long, lngNewStyle As Long

    'Get the Windows handle of the userform - required for the API calls
    If Application.Version < 9 Then
    lngMyHandle = FindWindow("THUNDERXFRAME", Me.Caption) 'For Excel 97
    Else
    lngMyHandle = FindWindow("THUNDERDFRAME", Me.Caption) 'For Excel 2000 onwards
    End If

    'Get the current style of the userform
    lngCurrentStyle = GetWindowLong(lngMyHandle, GWL_STYLE)

    'Create a new style with max and min buttons
    lngNewStyle = lngCurrentStyle Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX

    'Apply it to the userform
    SetWindowLong lngMyHandle, GWL_STYLE, lngNewStyle
    End Sub

    El codigo no es mio, pero esta comentado para que puedas entenderlo en algo al menos.

    Abraham
     
  5. **soulmatez**

    **soulmatez** Usuario

    Reg:
    11 Mar 2010
    Mensajes:
    41
    Me Gusta recibidos:
    0
  6. avalencia

    avalencia Usuario

    Reg:
    21 Ago 2008
    Mensajes:
    565
    Me Gusta recibidos:
    5
    Ehhhh, pero, ¿que no te funciono? Veo el archivo y en ningun lado veo lo que te envie.-...

    Abraham
     
  7. verzulsan

    verzulsan Incondicional de Ayuda Excel

    Reg:
    25 Oct 2009
    Mensajes:
    812
    Me Gusta recibidos:
    113
    He adaptado un codigo que tenia para minimizar las ventanas, esta en el modulo 1, quizas es un tanto rudo el metodo y no se si funcionara en todos los sistemas operativos, al menos en windows XP funciona, usa el comando (teclaWindwos+D), por lo que me imagino que en todos los sistemas operativos que no funcionen con este comando no funcionara esta macro.

    Adjunto el libro, espero les sirva, un saludo.
     

    Adjuntos:

  8. **soulmatez**

    **soulmatez** Usuario

    Reg:
    11 Mar 2010
    Mensajes:
    41
    Me Gusta recibidos:
    0
    avalencia, sorry, envie el archivo, si lo hize y todo :p...pero te envie el original, error mio, sorrypz!!!...:p...
    yo tengo vista!!!...no xp, pero lo probare igual :p...gracias!!!
     
  9. neverdelimon1

    neverdelimon1 Moderador Staff AyudaExcel

    Reg:
    25 Ago 2008
    Mensajes:
    894
    Me Gusta recibidos:
    76
    Hola soulmatez.

    Para que te funcion el código que te proporciono el master avalencia realiza el siguiente procedimiento.

    El el editor de VBA.
    -Inserta un Form (formulario)
    -Entra al módulo del Formulario
    -Pega el Código que te proporciono el master. (nota: el código que nos presenta el master avalencia esta diseñado para estar dentro del modulo asociado al form, no a un modulo estandar, pero una vez analizandolo podrias colocarlo en un modulo estandar y solo llamarlo 'solo tendrias que realizar pequeños ajustes cambios' o mejor aun crear un modulo clase y colocarlo ahi para ir registranto cada formulario dentro de la clase lo cual te permitiria reusar el mismo código en todos tus forms)
    -Ejecuta el formulario y listo.


    saludos cordiales
     
  10. **soulmatez**

    **soulmatez** Usuario

    Reg:
    11 Mar 2010
    Mensajes:
    41
    Me Gusta recibidos:
    0
    Gracias por toda su ayuda...en verdad he probado de todo y he echo de todo, cada post de uds. pero no me resulta, quizas copio mal o me equivoco en un minimo detalle, lo he echo aparte y en el trabajo que hago, y no resulta...el error que me sale, es sobre los comentarios que deben ir despues de End Sub, le borro los comentarios, los pongo aparte, de todo y no pasa naa...jajajaja...no se :p!!!
    De todas maneras era algo que queria ver sir esultaba, no era tan de obligacion hacer eso, agradesco 100% su ayuda y buena disposicion...

    MUCHAS GRACIAS!!!
     
  11. mjrofra

    mjrofra Moderador Staff AyudaExcel

    Reg:
    28 May 2009
    Mensajes:
    2.686
    Me Gusta recibidos:
    95
    Género:
    Masculino
    Hola,

    por favor, revisa el adjunto... este código va en un módulo:

    CÓDIGO:
    Es necesario iniciar sesión o registrarse para ver este contenido.
    y en el userform1 añade al evento initialize esto:

    CÓDIGO:
    Es necesario iniciar sesión o registrarse para ver este contenido.
    el código es de VBAexpress: http://www.vbaexpress.com/kb/getarticle.php?kb_id=165

    en la página de Chip Pearson encuentras más información para personalizar tus userforms usando APIs: http://www.cpearson.com/excel/formcontrol.aspx

    Ahora, si lo que quieres es minimizar el userform para poder trabajar en una hoja de cálculo, de pronto baste con mostrar el userform modeless y usar un botón para colapsalo... un poco más rudimentario pero hará el truco... he puesto un ejemplo en el adjunto.
     

    Adjuntos:

    • Libro1.zip
      Tamaño de archivo:
      14,7 KB
      Visitas:
      35
    Última edición: 11 May 2010
  12. **soulmatez**

    **soulmatez** Usuario

    Reg:
    11 Mar 2010
    Mensajes:
    41
    Me Gusta recibidos:
    0
    Mauricio, me resulto a la perfección, justo lo que pensaba, muchas gracias por ayudarme, en verdad es mucho mejor asi, te lo agradesco, en verdad entendia el codigo, pero no sabia como hacerlo...

    MUCHAS GRACIAS, con tu gran ayuda!!!
     
  13. Macro Antonio

    Macro Antonio Incondicional de Ayuda Excel

    Reg:
    12 May 2010
    Mensajes:
    5.784
    Me Gusta recibidos:
    1.132
    Hola:

    A ver si así lo ves mas claro.

    Salu2. Antoni.
     

    Adjuntos:

Compartir esta página