Saltar al contenido

Formulario


jeaa

Recommended Posts

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

 

Enlace a comentario
Compartir con otras webs

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 :(

Enlace a comentario
Compartir con otras webs

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.???

Enlace a comentario
Compartir con otras webs

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

 

Enlace a comentario
Compartir con otras webs

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............???

Enlace a comentario
Compartir con otras webs

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.

Enlace a comentario
Compartir con otras webs

@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

 

Enlace a comentario
Compartir con otras webs

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.

Enlace a comentario
Compartir con otras webs

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
Enlace a comentario
Compartir con otras webs

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.

Enlace a comentario
Compartir con otras webs

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? :(

Enlace a comentario
Compartir con otras webs

@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

 

Enlace a comentario
Compartir con otras webs

Archivado

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

  • 96 ¿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
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Buenas noches quisiera hacer esta formula auto incremental    =SI(INDIRECTO("'Casos de Prueba'!I1")="Resultados Ciclo 1"; SI(CONTAR.SI(INDIRECTO("'Casos de Prueba'!I:I"); "OK")=0; 0; CONTAR.SI(INDIRECTO("'Casos de Prueba'!I:I"); "OK")); 0)      para que cada vez que copiase y pegase la celda con la formula  se incrementara la letra en este caso la I pasara a J ,como el numero perteneciente a Resultados Ciclo pasando en este caso del 1 al 2.   Tengo también esta formula =CONCATENAR("CP";TEXTO(MAX((SI((ESNUMERO(HALLAR("CP";A$1:A1)))*(A$1:A1<>"");VALOR(EXTRAE(A$1:A1;3;3));0))+1);"000")&" - "&B2) quisiera que no tuviera los 3 ceros si no que fuera por ejemplo CP1 y se fuera incrementando. Gracias un saludo.
    • Con el diseño así como lo tiene en su libro, una fórmula de BUSCARV con COINCIDIR debería ser de utilidad =C5*BUSCARV($C$1,Tabla1[#Todo],COINCIDIR($D5,Tabla1[#Encabezados],0)) Es con lo que participaría en su consulta. Lo que resta es definir que hacer si no encuentra la OT porque así como esta le devolvería error en ese caso, o si tiene condiciones que haya podido omitir también le afectarían el resultado.
    • He cambiado mi macro a este: Sub repetir() Set a = Sheets(ActiveSheet.Name) uf = a.Range("C" & Rows.Count).End(xlUp).Row 'ultima fila con datos ActiveCell.Select ActiveCell.Offset(1, 0).Select   'Application.OnTime Now + TimeValue("00:00:10"), "repetir", , True End If End Sub   Lo que no se es como detenerlo al llegar a la ultima fila con datos de la columna C. Muchas gracias
    • Buenas tardes a todos. Tengo un problema que preciso de vuestra ayuda.  Tengo que controlar los gastos de la oficina que trabajo y he de repartir unos gastos a % según una OT y unos tipos de gastos. Envío un archivo adjunto. Lo que necesito es que lo que aparece en la columna en amarillo lo haga automáticamente, teniendo en cuenta los datos de la tabla a la derecha. Por ejemplo, el primer gasto tiene una cuota de 1477 euros y teniendo en cuenta que es un gasto de tipo Común y que la OT es la 12810234, le corresponde un gasto de 605,57 euros ya que según la tabla de la derecha su % a imputar es de un 41%. ¿alguien me puede ayudar con la formula? He de añadir muchas más líneas y más hojas con el resto de OT y en el futuro cambiar más datos, así que necesito automatizarlo con una formula Excel. Gracias. Control de gastos.xlsx
    • Hola buenas tardes: Por favor me pueden ayudar a realizar lo siguiente. ejecutar una macro después de un tiempo, que recorra una columna a partir de la celda activa hacia abajo. Es una lista extensa, que filtro desde la columna B. y solo me muestra las filas que me interesan. ejemplo: Si mi celda activa es la C23 ejecutar la macro y baje una celda y repite la macro después de 20 segundos y lo vuelve hacer(Simpre bajando una celda), y que este se detenga hasta la ultima fila que este visible en el filtro. Ya que puedo tener muchos datos mas.   Gracias   Prueba filtro y avance.xlsm
  • 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.