¿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

1 Respuesta

538.675 pts. Por cuestiones de tiempo y de la increíble desidia de...
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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas