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

#6 Héctor Miguel
16/07/2006 - 06:31 | Informe spam
hola... [que significa 'mamo66' ?] !

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



1) el 'resultado' que el codigo 'te da' con un valor de: VERDADERO se debe a lo siguiente:
a) en el codigo del evento '_click' del commandbutton1 [donde pones la nota], la instruccion DICE:
-> .Cells(lRow, 8).Value = TextBox5.Value = TextBox5
b) la parte donde se 'asigna' el valor, es la que 'sigue' despues DEL PRIMER signo '=' por lo tanto, la comparacion ES:
-> TextBox5.Value = TextBox5 [lo que SIEMPRE dara como 'resultado'... VERDADERO] ;)

2) en el evento ':initialize' del formulario [donde pones la nota] la instruccion DICE: -> TextBox5 = Saldo PERO...
a) las instrucciones en el evento '_initialize', se ejecutan -precisamente unos instantes- ANTES de que se muestre el formulario
b) lo anterior significa que la variable 'Saldo'... NO ha sido -aun- 'llenada' con la operacion de: -> Saldo = (ing - egr)
c) [ademas de que]... la variable 'Saldo' esta 'declarada' SOLO para el evento 'click' del commandbutton1 [y no opera para el 'initialize']
d) [y todavia] igual sucede con las variables 'ing' y 'egr' [ademas de que sus valores serian 0 por la inicializacion de sus textboxes]
e) [lo mas 'grave' es que] en ninguna parte del codigo [que expones] existe alguna instruccion para 'llenar' con el 'Saldo' el TextBox5 :-(

3) -posibles- soluciones ?
a) si no vas a utilizar [o no es necesario] el TextBox5 [ademas de que siendo TextBox el usuario podria 'manipularlo]...
ELIMINA el TextBox5, las variables 'ing', 'egr' y 'Saldo' [ademas de sus 'llamadas/usos'] y solamente en el evnto 'click' usas...
-> .Cells(lRow, 8).Value = Val(TextBox3.Text) - Val(TextBox4.Text) [o incluso mas 'delgada', +/- asi]:
-> .Cells(lRow, 8) = Val(TextBox3) - Val(TextBox4)
b) si el TextBox5 es 'indispensable' para la apariencia de tu formulario [o informacion a presentar]...
ELIMINA SOLO las variables [y sus 'llamadas/usos' posteriores] y en el evento '_click' del commandbutton1 usas lo siguiente:
b.1) en lugar de las variables y ANTES de las modificaciones que hiciste...
-> TextBox5 = Val(TextBox3) - Val(TextBox4)
b.2) en la instruccion con el 'pase' a la base de datos, cambias las instrucciones a:
-> .Cells(lRow, 8) = TextBox35.Value

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ las modificaciones expuestas __
Private Sub CommandButton1_Click()
Dim lRow As Long
Dim lPart As Long
Dim ws As Worksheet
+++++++++++++++++++++++++++++++++++++++++++ ACA ESTA LA 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...
Respuesta Responder a este mensaje
#7 mamo66
17/07/2006 - 07:11 | Informe spam
Hola Miguel, como esta maestro,

Algo mas amigo.. me faltaba el otro formulario, que corresponde a los
Deptos.
En esta misma planilla tengo un Formulario, el codigo anterior lo
habilite para trabajar con éste, el Formulario anterior nos quedo
perfecto. En este formulario que debo hacer ahora, debe hacer lo lo
siguiente, lo tengo todo ok, solo falta la formula sumar.si, que debe
quedar inserta en la hoja, todo lo que es Textbox esta ok, me faltan
las formulas

En la columna D y E, debo insertar la formula Sumar.si, que debe buscar
en la hoja "Gastos", el Codigo del Depto y sumarlos aca, el saldo es +
facil, es solo insertar una formula de suma y resta.

PERO COMO HAGO PARA QUE BUSQUE EL CODIGO DEL DEPTO Y SUME TODOS LOS
INGRESOS Y GASTOS ASOCIADOS A ESTE DEPTO.

El siguiente ejemplo...

Hoja DEPTO

Depto - Descripcion Presupuesto Tot.Ingresos
Tot.Gastos Saldo
A B C D
E F
Textbox1 Textbox2 Textbox3 Sumar.si
Sumar.si =C+D-E
1 Administracion 2000 1500
500 00+1500-500
2 Bodega 3000 0
500 000+0-500
************************************************************************************************************
Hoja Gastos

A B C D E
Socio Nombre Depto Debe Haber
10 Mamo66 1 1000
11 Joel 2
500
10 Mamo66 1 500
****************************************************************************************************************

Desde ya gracias amigo, te pasaste.

un saludo

Héctor Miguel ha escrito:

hola... [que significa 'mamo66' ?] !

> ... he echo una modificacion y en la Planilla excel en el campo donde tiene que ir el Resultado, me dice VERDADERO
> ... no soy un gran programador como mencionaba anteriormente, te adjunto el codigo no entiendo... la solucion que tu propones

1) el 'resultado' que el codigo 'te da' con un valor de: VERDADERO se debe a lo siguiente:
a) en el codigo del evento '_click' del commandbutton1 [donde pones la nota], la instruccion DICE:
-> .Cells(lRow, 8).Value = TextBox5.Value = TextBox5
b) la parte donde se 'asigna' el valor, es la que 'sigue' despues DEL PRIMER signo '=' por lo tanto, la comparacion ES:
-> TextBox5.Value = TextBox5 [lo que SIEMPRE dara como 'resultado'... VERDADERO] ;)

2) en el evento ':initialize' del formulario [donde pones la nota] la instruccion DICE: -> TextBox5 = Saldo PERO...
a) las instrucciones en el evento '_initialize', se ejecutan -precisamente unos instantes- ANTES de que se muestre el formulario
b) lo anterior significa que la variable 'Saldo'... NO ha sido -aun- 'llenada' con la operacion de: -> Saldo = (ing - egr)
c) [ademas de que]... la variable 'Saldo' esta 'declarada' SOLO para el evento 'click' del commandbutton1 [y no opera para el 'initialize']
d) [y todavia] igual sucede con las variables 'ing' y 'egr' [ademas de que sus valores serian 0 por la inicializacion de sus textboxes]
e) [lo mas 'grave' es que] en ninguna parte del codigo [que expones] existe alguna instruccion para 'llenar' con el 'Saldo' el TextBox5 :-(

3) -posibles- soluciones ?
a) si no vas a utilizar [o no es necesario] el TextBox5 [ademas de que siendo TextBox el usuario podria 'manipularlo]...
ELIMINA el TextBox5, las variables 'ing', 'egr' y 'Saldo' [ademas de sus 'llamadas/usos'] y solamente en el evnto 'click' usas...
-> .Cells(lRow, 8).Value = Val(TextBox3.Text) - Val(TextBox4.Text) [o incluso mas 'delgada', +/- asi]:
-> .Cells(lRow, 8) = Val(TextBox3) - Val(TextBox4)
b) si el TextBox5 es 'indispensable' para la apariencia de tu formulario [o informacion a presentar]...
ELIMINA SOLO las variables [y sus 'llamadas/usos' posteriores] y en el evento '_click' del commandbutton1 usas lo siguiente:
b.1) en lugar de las variables y ANTES de las modificaciones que hiciste...
-> TextBox5 = Val(TextBox3) - Val(TextBox4)
b.2) en la instruccion con el 'pase' a la base de datos, cambias las instrucciones a:
-> .Cells(lRow, 8) = TextBox35.Value

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ las modificaciones expuestas __
Private Sub CommandButton1_Click()
Dim lRow As Long
Dim lPart As Long
Dim ws As Worksheet
+++++++++++++++++++++++++++++++++++++++++++ ACA ESTA LA 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...
Respuesta Responder a este mensaje
#8 Héctor Miguel
17/07/2006 - 08:32 | Informe spam
hola, [todavia sin saber que significa 'mamo66'] ?

para no 'moverte el tapete' [ya que al parecer te has familiarizado en instrucciones con la propiedad Cells]...
y suponiendo que continuas con la determinacion de la fila con la variable 'lRows'
prueba con algo +/- como lo siguiente -> asumiendo que va dentro de un bloque With Worksheets("depto")

.Cells(IRow, 4).Formula = "=sumif(gastos!c:c," & .Cells(IRow, 1).Address(0, 0) & ",gastos!d:d)"
.Cells(IRow, 5).Formula = "=sumif(gastos!c:c," & .Cells(IRow, 1).Address(0, 0) & ",gastos!e:e)"
.Cells(IRow, 6).Formula = "=" & .Cells(IRow, 3).Address(0, 0) & _
"+" & .Cells(IRow, 4).Address(0, 0) & _
"-" & .Cells(IRow, 5).Address(0, 0)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
... me faltaba el otro formulario, que corresponde a los Deptos...
... solo falta la formula sumar.si, que debe quedar inserta en la hoja
En la columna D y E, debo insertar la formula Sumar.si, que debe buscar en la hoja "Gastos"
el Codigo del Depto y sumarlos aca, el saldo es + facil, es solo insertar una formula de suma y resta
... ejemplo... Hoja DEPTO
Depto - Descripcion Presupuesto Tot.Ingresos Tot.Gastos Saldo
A B C D E F
Textbox1 Textbox2 Textbox3 Sumar.si Sumar.si =C+D-E
1 Administracion 2000 1500 500 00+1500-500
2 Bodega 3000 0 500 000+0-500
Hoja Gastos
A B C D E
Socio Nombre Depto Debe Haber
10 Mamo66 1 1000
11 Joel 2 500
10 Mamo66 1 500
[...]
Respuesta Responder a este mensaje
#9 mamo66
17/07/2006 - 23:17 | Informe spam
Hola Miguel, espero que te encuentres bien

Grcias por tu vasliosa ayuda. Mira, agrege, el codigo que me enviastes
con lasmmodificaciones de las columnas en donde tengo los datos, pero
me aparece un Error 1004,

Que dice "Error definido por la aplicación o el Objeto" plop...

Saludos.


Héctor Miguel ha escrito:

hola, [todavia sin saber que significa 'mamo66'] ?

para no 'moverte el tapete' [ya que al parecer te has familiarizado en instrucciones con la propiedad Cells]...
y suponiendo que continuas con la determinacion de la fila con la variable 'lRows'
prueba con algo +/- como lo siguiente -> asumiendo que va dentro de un bloque With Worksheets("depto")

.Cells(IRow, 4).Formula = "=sumif(gastos!c:c," & .Cells(IRow, 1).Address(0, 0) & ",gastos!d:d)"
.Cells(IRow, 5).Formula = "=sumif(gastos!c:c," & .Cells(IRow, 1).Address(0, 0) & ",gastos!e:e)"
.Cells(IRow, 6).Formula = "=" & .Cells(IRow, 3).Address(0, 0) & _
"+" & .Cells(IRow, 4).Address(0, 0) & _
"-" & .Cells(IRow, 5).Address(0, 0)

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
> ... me faltaba el otro formulario, que corresponde a los Deptos...
> ... solo falta la formula sumar.si, que debe quedar inserta en la hoja
> En la columna D y E, debo insertar la formula Sumar.si, que debe buscar en la hoja "Gastos"
> el Codigo del Depto y sumarlos aca, el saldo es + facil, es solo insertar una formula de suma y resta
> ... ejemplo... Hoja DEPTO
> Depto - Descripcion Presupuesto Tot.Ingresos Tot.Gastos Saldo
> A B C D E F
> Textbox1 Textbox2 Textbox3 Sumar.si Sumar.si =C+D-E
> 1 Administracion 2000 1500 500 00+1500-500
> 2 Bodega 3000 0 500 000+0-500
> Hoja Gastos
> A B C D E
> Socio Nombre Depto Debe Haber
> 10 Mamo66 1 1000
> 11 Joel 2 500
> 10 Mamo66 1 500
> [...]
Respuesta Responder a este mensaje
#10 mamo66
18/07/2006 - 04:31 | Informe spam
Disculpa amigo Miguel...

todo esta Ok, ahora me funciono a la perfeccion...

Gracias.


mamo66 ha escrito:

Hola Miguel, espero que te encuentres bien

Grcias por tu vasliosa ayuda. Mira, agrege, el codigo que me enviastes
con lasmmodificaciones de las columnas en donde tengo los datos, pero
me aparece un Error 1004,

Que dice "Error definido por la aplicación o el Objeto" plop...

Saludos.


Héctor Miguel ha escrito:

> hola, [todavia sin saber que significa 'mamo66'] ?
>
> para no 'moverte el tapete' [ya que al parecer te has familiarizado en instrucciones con la propiedad Cells]...
> y suponiendo que continuas con la determinacion de la fila con la variable 'lRows'
> prueba con algo +/- como lo siguiente -> asumiendo que va dentro de un bloque With Worksheets("depto")
>
> .Cells(IRow, 4).Formula = "=sumif(gastos!c:c," & .Cells(IRow, 1).Address(0, 0) & ",gastos!d:d)"
> .Cells(IRow, 5).Formula = "=sumif(gastos!c:c," & .Cells(IRow, 1).Address(0, 0) & ",gastos!e:e)"
> .Cells(IRow, 6).Formula = "=" & .Cells(IRow, 3).Address(0, 0) & _
> "+" & .Cells(IRow, 4).Address(0, 0) & _
> "-" & .Cells(IRow, 5).Address(0, 0)
>
> si cualquier duda [o informacion adicional]... comentas ?
> saludos,
> hector.
>
> __ la consulta original __
> > ... me faltaba el otro formulario, que corresponde a los Deptos...
> > ... solo falta la formula sumar.si, que debe quedar inserta en la hoja
> > En la columna D y E, debo insertar la formula Sumar.si, que debe buscar en la hoja "Gastos"
> > el Codigo del Depto y sumarlos aca, el saldo es + facil, es solo insertar una formula de suma y resta
> > ... ejemplo... Hoja DEPTO
> > Depto - Descripcion Presupuesto Tot.Ingresos Tot.Gastos Saldo
> > A B C D E F
> > Textbox1 Textbox2 Textbox3 Sumar.si Sumar.si =C+D-E
> > 1 Administracion 2000 1500 500 00+1500-500
> > 2 Bodega 3000 0 500 000+0-500
> > Hoja Gastos
> > A B C D E
> > Socio Nombre Depto Debe Haber
> > 10 Mamo66 1 1000
> > 11 Joel 2 500
> > 10 Mamo66 1 500
> > [...]
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida