Saltar al contenido

Formulario


jeaa

Recommended Posts

publicado

Estimados expertos reciban un cordial saludo por intermedio de ayudaexcel, mi dificultad es que estoy creando un sistema de restaurante para cual tengo un formulario Hamburguesas la cual cuando selecciono una las mesas en momentos selecciona bien y en otro momento no selecciona, pero el problema es que si selecciono una mesa y si quiero seleccionar otra mesa si haber seleccionado un plato no debe seleccionar o por lo menos que diga no a seleccionado ningún plato en la mesa tal (mesa seleccionada anteriormente) por el momento eso es mi dificultad. Amigos programadores espero su pronta respuesta de antemano muchas gracias. Adjunto el enlace del archivo.

https://onedrive.live.com/?id=9076AC7202FC6EF1!522&cid=9076AC7202FC6EF1

 

publicado
Hace 17 horas, jeaa dijo:

Amigos programadores espero su pronta respuesta de antemano muchas gracias

Espero que algún programador tenga un super pantallón para poder ayudarte. En mi humilde portátil el userform se sale por todos lados de la pantalla :huh:. ¿Es necesario hacerlo tan gigante? Yo no puedo trabajar sobre él y por lo tanto no puedo ayudarte :(

publicado
Hace 19 minutos , Haplox dijo:

Espero que algún programador tenga un super pantallón para poder ayudarte. En mi humilde portátil el userform se sale por todos lados de la pantalla :huh:. ¿Es necesario hacerlo tan gigante? Yo no puedo trabajar sobre él y por lo tanto no puedo ayudarte :(

¡Dios mío, que carácter! Con poner Me.Zoom = 85 en el evento Initialize del formulario se acaba el problema, ¡Ale!, ya no tienes excusa.???

publicado

Disculpe por el tamaño de pantalla la pantalla se puede adecuar, de todos modos gracias.

publicado
Hace 21 horas, Antoni dijo:

¡Dios mío, que carácter!

Ya, ya,... pero a ti no te veo echar una  manita :P. Es que está lleno de trampas, hay que deshabilitar o cambiar la mitad de las cosas para abrirlo, pera poder cerrarlo... :blink:

Aparte @jeaa no entiendo la dinámica del form, ni la que necesitas. No sé que es esa macro de validadr mesa, que funciona unas veces y otras no. Explica claramente que te sobra o no funciona, así cómo quieres que funcione el form. Ejemplo

  • Si elijo una mesa no poder cambiar hasta... ¿Qué? ¿Validar el pedido?
  • SI elijo una mesa, pero quiero seleccionar otra porque, por ejemplo me he equivocado... ¿Qué hago?
  • etc.

Cosas así, para tener claro qué necesitas

 

publicado
Cita

 

Haplox dijo:

Ya, ya,... pero a ti no te veo echar una  manita :P. Es que está lleno de trampas, hay que deshabilitar o cambiar la mitad de las cosas para abrirlo, pera poder cerrarlo... :blink:

 

Es que soy daltónico, detecto el color "marrón" a la legua, jajaja............???

publicado

Disculpa lo que pasa es que quiero de me funcione correctamente los números de mesas; si selecciono una mesa también debo seleccionar los platos que deseo y así sucesivamente con todas las mesas y si yo selecciona otra mesa sin haber culminado con la mesa anterior seleccionado, me debe salir un mensaje no termino el pedido con la mesa anterior numero tal y no de be pasar a otra mesa. En conclusión si selecciona una mesa también debo seleccionar uno o mas platos y así para el resto de las mesas.

publicado

@jeaa , se me hace imposible trabajar con tu formulario, aparte de que con tanto código sin demasiado sentido, tocar cualquier cosa puede estroperar otra.

Habías empezado bien con M1. Pon este código para todas las pesas, cambiando M1 por cada mesa (M2, M3, etc): Espero que te pueda guiar para seguir

If MesaActiva <> M1.Caption And VisualizarLB.ListCount = 0 Then
        respuesta = MsgBox("La" & " Mesa " & Mid(VisorMesa, 6, 2) & " está activa " & "y no Ha Registrado Nada Para el Pedido: " & NoPedido & vbNewLine & vbNewLine & "¿Realmente quiere cambiar de mesa?", vbYesNo, "Mesa Activa sin Pedido")
            If respuesta = 6 Then
                VisorMesa = "MESA " & M1.Caption & " ACTIVA"
                M1.BackColor = vbRed
            End If
    End If

 

publicado

Haplox, muchas gracias voy a probar y te cuento luego...

publicado

Funciona bien lo que pasa es que una vez seleccionada la mesa selecciono un plato me dice que seleccione una mesa, pero ya esta seleccionado la mesa esto significa que no reconoce la mesa por favor que puedo hacer.

publicado
Hace 16 horas, jeaa dijo:

Funciona bien lo que pasa es que una vez seleccionada la mesa selecciono un plato me dice que seleccione una mesa

A ver, yo solo he puesto en el labe la mesa que se selecciona, pero no sé cómo hacías para realmente activarla. Solo tienes que llevar esa parte dentrol del If.

Como ves a poco que se toca se estropea algo. Por cierto, debes hacerlo con todas las mesas, que según lo visto para cada una tienes un código distinto :huh: . De hay lo que decías de "unas veces funciona y otras no". Lógico si para cada  mesa tienes un código distinto.

If MesaActiva <> M1.Caption And VisualizarLB.ListCount = 0 Then
        respuesta = MsgBox("La" & " Mesa " & Mid(VisorMesa, 6, 2) & " está activa " & "y no Ha Registrado Nada Para el Pedido: " & NoPedido & vbNewLine & vbNewLine & "¿Realmente quiere cambiar de mesa?", vbYesNo, "Mesa Activa sin Pedido")
            If respuesta = 6 Then
                VisorMesa = "MESA " & M1.Caption & " ACTIVA"
                M1.BackColor = vbRed

				'TODO EL CÓDIGO QUE USASES IRÍA AQUÍ'
	
            End If
    End If
publicado
respuesta = MsgBox("La" & " Mesa " & Mid(VisorMesa, 6, 2) & " está activa " & "y no Ha Registrado Nada Para el Pedido: " & NoPedido & vbNewLine & vbNewLine & "¿Realmente quiere cambiar de mesa?", vbYesNo, "Mesa Activa sin Pedido")

Al ejecutar el formulario selecciono una mesa me sales un mensajes como muestra la siguiente imagen image.png.642a7f4d9febbb6c3c6d36500dd09ff7.png

a la mesa lo toma Y y en todas las mesas, ademas este mensaje podría salir cuando pulso en otra mesa sin haber seleccionado un plato, pero este sale cuando apena ejecuto y escojo una mesa. Por favor si me dejo entender,  Haplox muchas gracias por tomarte el tiempo en mi duda de agradezco de todo corazón.

publicado
En 24/11/2019 at 17:24 , jeaa dijo:

a la mesa lo toma Y y en todas las mesas, ademas este mensaje podría salir cuando pulso en otra mesa sin haber seleccionado un plato, pero este sale cuando apena ejecuto y escojo una mesa. Por favor si me dejo entender,  Haplox muchas gracias por tomarte el tiempo en mi duda de agradezco de todo corazón.

No entiendo ¿Necesitas ayuda o modificar algo más? :(

publicado

Haplox, disculpa solo quiero nada mas que funcione las mesas

publicado

@jeaa , por partes... Te dejo el código, sin variar mucho para no estropear el resto de jaleo de macros que tienes, de las Mesas 1 y 2. Debes aplicarlas al  resto, FIJÁNDOTE que debes cambiar las celdas, NumMesa, etc. correspondientes a cada mesa.

En algún lugar, supongo que al registrar el pedido, debes poner MesaActiva a 0, si no no te funcionará. Lo del nº de pedido no me ha quedado claro cómo quieres ponerlo o su dinámica. Mira el cambio que he hecho a ver si es lo que necesitas... Y crucemos los dedos ?
 

Private Sub M1_Click()

    Dim NumMesa As Integer, PedMesa As Integer
    NumMesa = Hoja6.Cells(2, 2)
    PedMesa = Hoja6.Cells(2, 3)
    TotalL = "0"
    TotalL = Format(TotalL, "$ ###,##0")
    VisualizarLB.Clear
    
    Uf = Sheets(2).Range("B1:B" & Rows.count).End(xlDown).Row
    NoPedido = WorksheetFunction.Max(Sheets(2).Range("B1:B" & Uf)) + 1
    
    'NoPedido.Text = Hoja2.Cells(2, 14) + 1
    BillTxt.Text = ""
    BillTxt.Text = Format(BillTxt.Text, "$ ###,##0")
    
    If MesaActiva <> 0 And VisualizarLB.ListCount = 0 Then
    
        MsgBox "No Ha Registrado Nada Para el Pedido: " & NoPedido
        M1.ForeColor = vbGreen
    Exit Sub
    End If
    
    
    
    
    If NumMesa = 0 Then
    
        'VisorMesa = "MESA 1, ESTA ACTIVA CON EL PEDIDO No " & NoPedido.Text
        VisorMesa = Hoja6.Cells(NumMesa + 2, 1) + ", ESTA ACTIVA. PEDIDIDO No: " & NoPedido.Text
        Hoja6.Cells(NumMesa + 2, 2) = 1
        Hoja6.Cells(NumMesa + 2, 3) = NoPedido.Text
        M1.ForeColor = vbRed
    
    End If
         
    If PedMesa <> 0 Then
        
        Me.VisualizarLB.Clear
        Dim ped, count As Integer, FilPed As Integer, UltFil As Integer
        NoPedido.Text = Hoja6.Range("C2")
        FilPed = Hoja6.Range("C2")
        UltFil = Hoja2.Range("B" & Rows.count).End(xlUp).Row

            For count = 2 To UltFil
            
                ped = Hoja2.Cells(count, 2)
                
                    If ped = FilPed Then
                    
                        Me.VisualizarLB.AddItem Cells(count, 1)
                        Me.VisualizarLB.List(Me.VisualizarLB.ListCount - 1, 1) = Hoja2.Cells(count, 2)
                        Me.VisualizarLB.List(Me.VisualizarLB.ListCount - 1, 2) = Hoja2.Cells(count, 3)
                        Me.VisualizarLB.List(Me.VisualizarLB.ListCount - 1, 3) = Hoja2.Cells(count, 4)
                        Me.VisualizarLB.List(Me.VisualizarLB.ListCount - 1, 4) = Hoja2.Cells(count, 5)
                        Me.VisualizarLB.List(Me.VisualizarLB.ListCount - 1, 5) = Hoja2.Cells(count, 6)
                        Me.VisualizarLB.List(Me.VisualizarLB.ListCount - 1, 6) = Hoja2.Cells(count, 7)
                        Me.VisualizarLB.List(Me.VisualizarLB.ListCount - 1, 7) = Hoja2.Cells(count, 8)
                                        
                    End If
                    
            Next count

        End If
            
            Dim Suma As Long
            Dim i As Integer
            
            Suma = 0
            
                For i = 0 To Me.VisualizarLB.ListCount - 1
            
                    Suma = Suma + CDbl(Me.VisualizarLB.List(i, 7))
            
                Next
           
                    TotalL = Suma
                    TotalL = Format(TotalL.Caption, "$ ###,##0")
     
                    

 
 MesaActiva = 1
End Sub

 

Private Sub M2_Click()


Dim NumMesa As Integer, PedMesa As Integer
    NumMesa = Hoja6.Cells(3, 2)
    PedMesa = Hoja6.Cells(3, 3)
    TotalL = "0"
    TotalL = Format(TotalL, "$ ###,##0")
    VisualizarLB.Clear
    
    Uf = Sheets(2).Range("B1:B" & Rows.count).End(xlDown).Row
    NoPedido = WorksheetFunction.Max(Sheets(2).Range("B1:B" & Uf)) + 1
    
    'NoPedido.Text = Hoja2.Cells(2, 14) + 1
    BillTxt.Text = ""
    BillTxt.Text = Format(BillTxt.Text, "$ ###,##0")
    
    If MesaActiva <> 0 And VisualizarLB.ListCount = 0 Then
    
        MsgBox "No Ha Registrado Nada Para el Pedido: " & NoPedido
        M2.ForeColor = vbGreen
    Exit Sub
    End If
    
    
    
    
    If NumMesa = 0 Then
    
        VisorMesa = "MESA 1, ESTA ACTIVA CON EL PEDIDO No " & NoPedido.Text
        VisorMesa = Hoja6.Cells(NumMesa + 2, 1) + ", ESTA ACTIVA. PEDIDIDO No: " & NoPedido.Text
        Hoja6.Cells(NumMesa + 2, 2) = 1
        Hoja6.Cells(NumMesa + 2, 3) = NoPedido.Text
        M1.ForeColor = vbRed
    
    End If
         
    If PedMesa <> 0 Then
        
        Me.VisualizarLB.Clear
        Dim ped, count As Integer, FilPed As Integer, UltFil As Integer
        NoPedido.Text = Hoja6.Range("C3")
        FilPed = Hoja6.Range("C3")
        UltFil = Hoja2.Range("B" & Rows.count).End(xlUp).Row

            For count = 2 To UltFil
            
                ped = Hoja2.Cells(count, 2)
                
                    If ped = FilPed Then
                    
                        Me.VisualizarLB.AddItem Cells(count, 1)
                        Me.VisualizarLB.List(Me.VisualizarLB.ListCount - 1, 1) = Hoja2.Cells(count, 2)
                        Me.VisualizarLB.List(Me.VisualizarLB.ListCount - 1, 2) = Hoja2.Cells(count, 3)
                        Me.VisualizarLB.List(Me.VisualizarLB.ListCount - 1, 3) = Hoja2.Cells(count, 4)
                        Me.VisualizarLB.List(Me.VisualizarLB.ListCount - 1, 4) = Hoja2.Cells(count, 5)
                        Me.VisualizarLB.List(Me.VisualizarLB.ListCount - 1, 5) = Hoja2.Cells(count, 6)
                        Me.VisualizarLB.List(Me.VisualizarLB.ListCount - 1, 6) = Hoja2.Cells(count, 7)
                        Me.VisualizarLB.List(Me.VisualizarLB.ListCount - 1, 7) = Hoja2.Cells(count, 8)
                                        
                    End If
                    
            Next count

        End If
            
            Dim Suma As Long
            Dim i As Integer
            
            Suma = 0
            
                For i = 0 To Me.VisualizarLB.ListCount - 1
            
                    Suma = Suma + CDbl(Me.VisualizarLB.List(i, 7))
            
                Next
           
                    TotalL = Suma
                    TotalL = Format(TotalL.Caption, "$ ###,##0")
     
                    

 
 MesaActiva = 2
End Sub

 

publicado

Muchas gracias, me sirvió mucho

Archivado

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

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      187
    • Comentarios
      97
    • Revisiones
      28

    Más información sobre "Un juego del Rabino en Excel"
    Última descarga
    Por pegones1

    1    1

  • Crear macros Excel

  • Mensajes

    • Hola nuevamente. Por eso la importancia de lo que mencionas tú como "ruta relativa". Tal cual comentas, y aún sin llegar a algunos detalles importantes para ayudarte, en realidad tal cual te comenté le día miércoles, pues sí podías hacer como comentabas, era cosa de obtener los Id de Windows (como tú los llamas) y la ruta de OneDrive en casa usuario y eso sí se puede obtener con VBA y luego pasarlo a PQ, pero medio que te cerraste en que "PQ no puede trabajar con rutas relativas", cosa cierta pero siempre hay formas. Si SAP puede o no guardar en OneDrive o SharePoint, pues si está mapeado en la PC ¡claro que se puede! Pero bueno, creo que si te es útil tu propia propuesta ¡avanza con eso!
    • Perdona @Abraham Valencia pero he estado liado estos días. En realidad todo el problema se reduce a estos dos problemas: Problema 1: El script que "fabrica" SAP y que luego "pego" en la macro, no es capaz de  guardar archivos en SharePoint. He estado buscando, y en realidad muchas personas tienen ese problema (no poder guardar un Excel en SAP a través de VBA). Eso muy probablemente sean problemas de permisos, que no puedo cambiar (no soy administrador de nada). Como no puedo solucionarlo así, paso al plan B, que es guardar en Excel que me genera SAP en el ordenador de cada usuario que ejecute la plantilla (y que sí está guardada en SharePoint), para después con PowerQuery llamar a ese Excel (el export). Para ello, pretendo guardar el export, en la ruta relativa "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" donde los \..\..\..\ saltan las rutas personales de cada usuario (tipo C:\users\IDusuario\). Eso lo hace bien, y el archivo se guarda en la ruta de cada usuario que lo usa, pero surge el problema 2 Problema 2: PowerQuery no trabaja con rutas relativas del tipo  "C:\..\..\..\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" necesita que sea del tipo fija "C:\users\IDusuario\OneDrive - NombreEmpresa\Documentos\SAP\SAP GUI" pero claro, IDusuario es diferente para cada usuario.   Pero escribiendo todo esto, creo que he dado con una posible solución, no grabar el export en una ruta de usuario, sino en una en la raiz de C:, que siempre será igual para todos los usuarios, del tipo C:\Sap\export.xlsx que seria igual en todos los ordenadores. Asi sí podría decirle a PowerQuery que vaya siempre a la ruta C:\Sap\ que existirá en todos los ordenadores. Mañana intentaré hacer pruebas, aunque mi solución ideal seria que se pudiera guardar en el SharePoint. Saludos.
    • Hola La opción brindada por @torquemada es correcta, funciona, pero hay algunos inconvenientes que (desde mi punto de vista) no la convierten en mi primera elección. Los inconvenientes son: Tendrías que ir columna por columna haciendo los reemplazos, claro que no se harían a mano sino que utilizarías la opción reemplazar o la opción texto en columnas, aun asi demorará un poquito y será trabajoso. Cada vez que descargues otro listado, tendrás que volver a realizar los reemplazos. Me parece una mejor propuesta lo siguiente: Descarga los movimientos a un archivo de Excel Desde tu control de pagos (otro archivo) cargas los movimientos del archivo descargado mediante Power Query Power Query hará los reemplazos y reconocerá todo correctamente (sin que tengas que hacer nada especial) Cuando descargues los movimientos un día posterior, solamente tendrás que hacer clic en "Actualizar" y todo funcionará en automático
    • Hola a todos, Efectivamente, me temo que tal como trabajan las funciones =HOY() y/o =AHORA() (volátiles), sólo con macros puedes obtener soluciones. Un recurso pedestre podría ser, cada vez que quieras que se fije un dato, te sitúes en esa celda y pulses F2, F9 e INTRO.  Pero claro, puede ser un inconveniente si hay que hacerlo repetitivamente en muchas ocasiones,.............. en fin, lo comento sólo como posibilidad. Saludos,
    • Hola nuevamente, mi duda sigue siendo la ruta, o rutas, finales que quedan, esas que llamas "relativas"; igual por si acaso pon 3 o 4 de esas, tal cual son y/o se ven en el explorador de cada PC y, de ser posible, en cualquier otro "lado" en que las veas.
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • 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.