¿Cómo consigo que en un textbox me calcule el valor de otros textbox y no me deje cambiarlo?
¿Qué tal fer espero que hayas pasado un buen fin de semana, necesito de tu ayuda, es una pregunta larga pero creo que mejor la hago por partes no cres? Bueno, la cosa es que estoy haciendo un sistema para imprimir fichas de deposito e imprimir cheques para evitarme llenarlos a mano, la primera pregunta que te voy a hacer ahora es la siguiente, hice un formulario, con barios textbox para ingresar los datos de la ficha de deposito, la cosa es que por lo regular deposito en efectivo, y en ocasiones con efectivo y cheques, hasta abajo de estas texbox inserte otro que se llama total, la pregunta es:como le hago para que en el texbox "total" me aparezca el total de los otros textbox y que no se pueda modificar, espero que me puedas ayudar y que me haya explicado bien, ¿gracias las demás preguntas te las hago después por que creo que esta es un poco larga no? Gracias
1 respuesta
Respuesta de fejoal
1
1
fejoal, Por falta de tiempo para responder como me gusta hacerlo suspendo...
Sr Latorre Efectivamente, volví de mi fin de semana y vi tu pregunta que prometes larga. Espero que sepas dividirla, al mejor estilo de Anibal Lecter. Por mi parte, empezaré por atrás: Para que un textbox no pueda modificarse, nada mejor que -precisamente- no sea un textbox... En estos caso, una sana política es usar un label o etiqueta, para mostrar un resoltado y, desde luego, absolutamente, inviolable. Así planteadas las cosas, asumiré que tienes, por caso, tres textbox y una etiqueta. A cada uno de ellos, asociarás un código a ejecutar al salir del textbox, el cuál controlará primero que el ingreso corresponda a un número. De ser así sumará los valores de cada textbox y los mostrará en el label. Caso contrario te reprenderá y te devolverá al casillero en cuestión para que lo corrijas. En el panel de declaraciones de tu formulario, pega estos códigos: Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) With TextBox1 If Len(.Value) > 0 Then If IsNumeric(.Value) Then ActLabel Else MsgBox "Ingrese un NUMERO en esta casilla", vbExclamation, "NO ES NUMERICO" Cancel = True .SetFocus .SelStart = 0 .SelLength = Len(.Value) End If End If End With End Sub Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) With TextBox2 If Len(.Value) > 0 Then If IsNumeric(.Value) Then ActLabel Else MsgBox "Ingrese un NUMERO en esta casilla", vbExclamation, "NO ES NUMERICO" Cancel = True .SetFocus .SelStart = 0 .SelLength = Len(.Value) End If End If End With End Sub Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean) With TextBox3 If Len(.Value) > 0 Then If IsNumeric(.Value) Then ActLabel Else MsgBox "Ingrese un NUMERO en esta casilla", vbExclamation, "NO ES NUMERICO" Cancel = True .SetFocus .SelStart = 0 .SelLength = Len(.Value) End If End If End With End Sub Sub ActLabel() Label1.Caption = Val(TextBox1.Value) + Val(TextBox2.Value) + Val(TextBox3.Value) End Sub En caso que tuvieras más textboxes, copia y pega el cógigo de cualquiera de ellos y, simplemente, ¿reemplaza dónde dice Textbox? Por el número correspondiente al nuevo. Dado que use la función With, sólo tendrás que reemplazar dos instrucciones (la del nombre de la macro asociada y, justamente, la de la sentencia With). Tenias razón, esta es toda una larga pregunta en si misma. Espero la próxima si esta estuviera OK. Un abrazo! Fernando