Restar 2 TextBox

15/07/2006 - 22:53 por mamo66 | Informe spam
Hola, Estoy haciendo un trabajito, el cual lo tengo casi listo, éste
se alimenta de algunos datos de la Planilla Excel y despues inserto
todos estos datos en una base de Datos del Mismo Libro. Pero estoy
complicado con el Resultado de 2 TextBox, uno de estos es (ingresos
(textbox3) y otro Egresos (textbox4)), por lo tanto debo hacer una
resta con estos Textbox...

El problema es que no logro que me muestre el resultado en el
Combobox5 y me inserte en la base de Datos "Detalle_Gastos"

Este es el codigo..
************************************************************
Private Sub CommandButton1_Click()
Dim lRow As Long
Dim lPart As Long
Dim ws As Worksheet
Set ws = Worksheets("Detalle_Gastos")


'Busca la fila vacia en la BD
lRow = ws.Cells(Rows.Count, 1) _
.End(xlUp).Offset(1, 0).Row

lPart = Me.ComboBox1.ListIndex

'Chequea el Codigo del Socio
If Trim(Me.ComboBox1.Value) = "" Then
Me.ComboBox1.SetFocus
MsgBox "Por Favor, ingrese un Codigo"
Exit Sub
End If

'Copya en la Base de Datos
With ws
.Cells(lRow, 1).Value = Me.ComboBox1.Value
.Cells(lRow, 2).Value = Me.ComboBox1.List(lPart, 1)
.Cells(lRow, 3).Value = Me.ComboBox2.Value
.Cells(lRow, 4).Value = Me.TextBox1.Value
.Cells(lRow, 5).Value = Me.TextBox2.Value
.Cells(lRow, 6).Value = Me.TextBox3.Value
.Cells(lRow, 7).Value = Me.TextBox4.Value
' Este es el dato que va a la Base de datos, y no lo inserta
`******************************************************
.Cells(lRow, 8).Value = Me.TextBox5.Text
'*****************************************************
.Cells(lRow, 9).Value = Me.TextBox6.Value
End With

'Limpia las variables
Me.ComboBox1.Value = ""
Me.ComboBox2.Value = ""
Me.TextBox1.Value = ""
Me.TextBox2.Value = Format(Date, "Medium Date")
Me.TextBox3.Value = ""
Me.TextBox4.Value = ""
Me.TextBox5.Value = Format(Saldo, "#,##.00")
Me.TextBox6.Value = 0
Me.ComboBox1.SetFocus
End Sub

Private Sub UserForm_Initialize()
Dim codigolist As Range
Dim codigoDepto As Range
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Set ws1 = Worksheets("Tabla_socios")
Set ws2 = Worksheets("Tabla_deptos")
' Defini estas variables pero no pasa nada
ing = Val(TextBox3.Text)
egr = Val(TextBox4.Text)
Saldo = ing - egr


For Each codigolist In ws1.Range("codigolist")
With ComboBox1
.AddItem codigolist.Value
.List(.ListCount - 1, 1) = codigolist.Offset(0, 1).Value
End With
Next codigolist

For Each codigoDepto In ws2.Range("codigoDepto")
With ComboBox2
.AddItem codigoDepto.Value
.List(.ListCount - 1, 1) = codigoDepto.Offset(0, 1).Value
End With
Next codigoDepto


TextBox1.Value = 0
TextBox2.Value = Format(Date, "Medium Date")
TextBox3.Value = 0
TextBox4.Value = 0
****************************************
TextBox5.Text = Saldo ' se supone que aqui esta el resultado pero
nada
'****************************************
TextBox6.Value = 0
ComboBox1.SetFocus
End Sub

Preguntas similare

Leer las respuestas

#1 klomkbock
16/07/2006 - 00:57 | Informe spam
Hola mamo66

no tengo mucha idea, pero a voz de pronto(que se dice por aqui), hay algo
que me llama la atencion, y que no se si estara en ello el problema:

For Each codigolist In ws1.Range("codigolist")
With ComboBox1
.AddItem codigolist.Value
.List(.ListCount - 1, 1) = codigolist.Offset(0, 1).Value
End With
Next codigolist

For Each codigoDepto In ws2.Range("codigoDepto")
With ComboBox2
.AddItem codigoDepto.Value
.List(.ListCount - 1, 1) = codigoDepto.Offset(0, 1).Value
End With
Next codigoDepto



¿para cada codigolist en un codigolist? esto, y lo digo para intentar
ayudar unicamente, me suena a algo asi como: para cada coche en este
coche. Lo mismo hay algo que no capto, pero sin haber analizado mucho mas
el codigo, puede que por aqui ande el error.

Disculpa si no soy de gran ayuda, pero la expresion anterior me ha llamado
la atencion y he pensado que quizas sea esto. Por otro lado, creo que
podrias eliminar del codigo todos (o al menos casi todos dicho de memoria)
los Me, dado que parece que estas en el modulo de formulario que contiene
los controles.

Un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#2 mamo66
16/07/2006 - 01:29 | Informe spam
Muchas gracias Ivan..

Lo que pasa es que no soy un programador experto, generalmente no
programo, pero me gusta trabajar con el Excel, y me esta gustando este
tema de las Macros, se pueden hacer muchas cosas, el Tema de las "Me.",
no los entendia mucho, ahora con tu ayuda capto algo. Lo que pasa es
que esta planilla, tiene varias hojas, en una de ellas estoy sacando el
dato para el Combobox1, que es el "Codigolist", y de otra hoja, saco el
dato para el Combobox2, que es el "codigodepto".

De acuerdo a tus instrucciones ya le he sacado lo "Me.", sin embargo mi
problema persiste, ya que aun no puedo llegar a obtener el resultado de
la formula entre el

TextBox5=Val(Textbox3+textbox4 )
y no se como hacerlo para que este resultado quede en la celda de la
planilla

Gracias por tu apoyo...

un abrazo amigo.

Ivan ha escrito:

Hola mamo66

no tengo mucha idea, pero a voz de pronto(que se dice por aqui), hay algo
que me llama la atencion, y que no se si estara en ello el problema:

For Each codigolist In ws1.Range("codigolist")
> With ComboBox1
> .AddItem codigolist.Value
> .List(.ListCount - 1, 1) = codigolist.Offset(0, 1).Value
> End With
> Next codigolist

> For Each codigoDepto In ws2.Range("codigoDepto")
> With ComboBox2
> .AddItem codigoDepto.Value
> .List(.ListCount - 1, 1) = codigoDepto.Offset(0, 1).Value
> End With
> Next codigoDepto

¿para cada codigolist en un codigolist? esto, y lo digo para intentar
ayudar unicamente, me suena a algo asi como: para cada coche en este
coche. Lo mismo hay algo que no capto, pero sin haber analizado mucho mas
el codigo, puede que por aqui ande el error.

Disculpa si no soy de gran ayuda, pero la expresion anterior me ha llamado
la atencion y he pensado que quizas sea esto. Por otro lado, creo que
podrias eliminar del codigo todos (o al menos casi todos dicho de memoria)
los Me, dado que parece que estas en el modulo de formulario que contiene
los controles.

Un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#3 Héctor Miguel
16/07/2006 - 01:47 | Informe spam
hola, 'anonimo/a' !

... estoy complicado con el Resultado de 2 TextBox, uno de estos es (ingresos (textbox3) y otro Egresos (textbox4))
... debo hacer una resta con estos Textbox...
El problema es que no logro que me muestre el resultado en el Combobox5 y me inserte en la base de Datos "Detalle_Gastos"...



[parece que] el 'detalle' esta en que las variables que usas: -> ing = Val(TextBox3.Text), egr = Val(TextBox4.Text), Saldo = ing - egr

a) las estableces EN el evento de inicializacion del formulario [cuando no se ha mostrado siquiera] por lo que se supone estan 'vacias' -?-

b) [probablemente] sera mejor si utilizas los eventos de los textboxes 3 y 4 para 'actualizar' el contenido del textbox5
p.e. en el evento '_change' o... -quizas- en el evento '_exit'
o quizar 'tomar' los datos y actualizar 'directamente' las variables en el evento '_click' del commandbutton [antes de 'pasarlos' a la BD]

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#4 klomkbock
16/07/2006 - 03:19 | Informe spam
Hola mamo66

Lo primero pedirte disculpas por dar consejos improcedentes, sobre todo
sin haber prestado suficiente atencion a la consulta.

Por lo que veo te esta pasando lo que a mi, te estas enganchando a las
macros en excel. Andate con ojo... te pude costar un divorcio.

Bromas aparte, te recomiendo que hagas caso a Hector Miguel, es un gran
camello de esta droga (disculpa HM) y que te recorras el foro en busca de
sus respuestas y las de otros muchos (KL, William, Victor,... y muchos mas
que posiblemente ocuparian varios folios y que espero no se sientan
agraviados).

En cuanto a Me solo comentar que no tiene relacion con la consulta, era un
comentario para ahorrarte tiempo y trabajo a la hora de escribir el
codigo, y posiblemente ganarle velocidad. El uso de Me (y no me hagas
demasiado caso) no es necesario(en general) cuando se trabaja con
controles de un formulario dentro del modulo del mismo formulario.

Disculpa de nuevo por no ser de gran ayuda
Un saludo y hasta pronto
Ivan


mamo66 wrote:

Muchas gracias Ivan..

Lo que pasa es que no soy un programador experto, generalmente no
programo, pero me gusta trabajar con el Excel, y me esta gustando este
tema de las Macros, se pueden hacer muchas cosas, el Tema de las "Me.",
no los entendia mucho, ahora con tu ayuda capto algo. Lo que pasa es
que esta planilla, tiene varias hojas, en una de ellas estoy sacando el
dato para el Combobox1, que es el "Codigolist", y de otra hoja, saco el
dato para el Combobox2, que es el "codigodepto".

De acuerdo a tus instrucciones ya le he sacado lo "Me.", sin embargo mi
problema persiste, ya que aun no puedo llegar a obtener el resultado de
la formula entre el

TextBox5=Val(Textbox3+textbox4 )
y no se como hacerlo para que este resultado quede en la celda de la
planilla

Gracias por tu apoyo...

un abrazo amigo.

Ivan ha escrito:

> Hola mamo66
>
> no tengo mucha idea, pero a voz de pronto(que se dice por aqui), hay algo
> que me llama la atencion, y que no se si estara en ello el problema:
>
> For Each codigolist In ws1.Range("codigolist")
> > With ComboBox1
> > .AddItem codigolist.Value
> > .List(.ListCount - 1, 1) = codigolist.Offset(0, 1).Value
> > End With
> > Next codigolist
>
> > For Each codigoDepto In ws2.Range("codigoDepto")
> > With ComboBox2
> > .AddItem codigoDepto.Value
> > .List(.ListCount - 1, 1) = codigoDepto.Offset(0, 1).Value
> > End With
> > Next codigoDepto
>
> ¿para cada codigolist en un codigolist? esto, y lo digo para intentar
> ayudar unicamente, me suena a algo asi como: para cada coche en este
> coche. Lo mismo hay algo que no capto, pero sin haber analizado mucho mas
> el codigo, puede que por aqui ande el error.
>
> Disculpa si no soy de gran ayuda, pero la expresion anterior me ha llamado
> la atencion y he pensado que quizas sea esto. Por otro lado, creo que
> podrias eliminar del codigo todos (o al menos casi todos dicho de memoria)
> los Me, dado que parece que estas en el modulo de formulario que contiene
> los controles.
>
> Un saludo y hasta pronto
> Ivan
Respuesta Responder a este mensaje
#5 mamo66
16/07/2006 - 05:13 | Informe spam
Gracias Miguel,

Ahora he echo una modificacion y en la Planilla excel en el campo donde
tiene que ir el Resultado, me dice VERDADERO, mil disculpa porque no
soy un gran programador como mencionaba anteriormente, te adjunto el
codigo...

la verdad esque no entiendo muy bien la solucion que tu propones

Private Sub CommandButton1_Click()
Dim lRow As Long
Dim lPart As Long
Dim ws As Worksheet
+++++++++++++++++++++++++++++++++++++++++++ ACA ESTA LLA
MODIFICACION
Dim ing As Variant
Dim egr As Variant
Dim Saldo As Variant
ing = Val(TextBox3.Text)
egr = Val(TextBox4.Text)
Saldo = (ing - egr)
+++++++++++++++++++++++++++++++++++++++++++TERMINA ACA
Set ws = Worksheets("Detalle_Gastos")

'Busca la fila vacia en la BD
lRow = ws.Cells(Rows.Count, 1) _
.End(xlUp).Offset(1, 0).Row

lPart = ComboBox1.ListIndex

'Chequea el Codigo del Socio
If Trim(ComboBox1.Value) = "" Then
ComboBox1.SetFocus
MsgBox "Por Favor, ingrese un Codigo"
Exit Sub
End If

'Copya en la Base de Datos
With ws
.Cells(lRow, 1).Value = ComboBox1.Value
.Cells(lRow, 2).Value = ComboBox1.List(lPart, 1)
.Cells(lRow, 3).Value = ComboBox2.Value
.Cells(lRow, 4).Value = TextBox1.Value
.Cells(lRow, 5).Value = TextBox2.Value
.Cells(lRow, 6).Value = TextBox3.Value
.Cells(lRow, 7).Value = TextBox4.Value
.Cells(lRow, 8).Value = TextBox5.Value = TextBox5 'SE SUPONE QUE
ACA COPIA EN LA BD, DE EXCEL... (Dice VERDADERO)
.Cells(lRow, 9).Value = TextBox6.Value
End With

'Limpia las variables
ComboBox1.Value = ""
ComboBox2.Value = ""
TextBox1.Value = ""
TextBox2.Value = Format(Date, "Medium Date")
TextBox3.Value = ""
TextBox4.Value = ""
TextBox5.Value = Format(0, "##,###")
TextBox6.Value = ""
ComboBox1.SetFocus
End Sub

Private Sub TextBox5_Change()

End Sub

Private Sub UserForm_Initialize()
Dim codigolist As Range
Dim codigoDepto As Range
Dim ws1 As Worksheet
Dim ws2 As Worksheet

Set ws1 = Worksheets("Tabla_socios")
Set ws2 = Worksheets("Tabla_deptos")


For Each codigolist In ws1.Range("codigolist")
With ComboBox1
.AddItem codigolist.Value
.List(.ListCount - 1, 1) = codigolist.Offset(0, 1).Value
End With
Next codigolist

For Each codigoDepto In ws2.Range("codigoDepto")
With ComboBox2
.AddItem codigoDepto.Value
.List(.ListCount - 1, 1) = codigoDepto.Offset(0, 1).Value
End With
Next codigoDepto


TextBox1.Value = 0
TextBox2.Value = Format(Date, "Medium Date")
TextBox3.Value = 0
TextBox4.Value = 0
TextBox5 = Saldo ' ACA ALMACENO EL RESULTADO EN EL
TEXTBOX5... (ESTA BIEN ???) ESTA ES MI DUDA
TextBox6.Value = 0
ComboBox1.SetFocus
End Sub

Gracias por tu ayuda, me falta nada mas solucionar este problema y
estoy Ok (Te puedo enviar la planilla ????)

Gracias amigo..

Héctor Miguel ha escrito:

hola, 'anonimo/a' !

> ... estoy complicado con el Resultado de 2 TextBox, uno de estos es (ingresos (textbox3) y otro Egresos (textbox4))
> ... debo hacer una resta con estos Textbox...
> El problema es que no logro que me muestre el resultado en el Combobox5 y me inserte en la base de Datos "Detalle_Gastos"...

[parece que] el 'detalle' esta en que las variables que usas: -> ing = Val(TextBox3.Text), egr = Val(TextBox4.Text), Saldo = ing - egr

a) las estableces EN el evento de inicializacion del formulario [cuando no se ha mostrado siquiera] por lo que se supone estan 'vacias' -?-

b) [probablemente] sera mejor si utilizas los eventos de los textboxes 3 y 4 para 'actualizar' el contenido del textbox5
p.e. en el evento '_change' o... -quizas- en el evento '_exit'
o quizar 'tomar' los datos y actualizar 'directamente' las variables en el evento '_click' del commandbutton [antes de 'pasarlos' a la BD]

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida