Problemas con funciones
Funciones en Visual Basic
Feliz Año Nuevo a todos: está es mi primera vez en este foro y comenzaré con una pregunta:
Estoy aprendiendo Visual Basic desde un Libro. El libro pone una función que calcula la raíz cuadrada de un número, pero no sé a que control asignarsela. Para probarla puse en un formulario lo sgte:
- un command button
- un text box
- un label box
Entonces en el label box pongo lo sgte.: Calcular raíz cuadrada
- El text box lo dejo para que el usuario escriba su numero
- El command button es para que cuando el usuario haga clic en él se cambie el número del text box a su raíz cuadrada.
La codificación que entrega el libro es la siguiente:
"
Function dblSqrt(dblParameter As Double) As Double
If dblParameter < 0 Then
dblSqrt = -1
Else
dblSqrt = Sqr(dblParameter)
End If
End Function
"
Sin embargo, no sé realmente donde poner este codigo, ni como relacionar los controles para que esto funcione. Lo único que se me ocurre es llamar la función desde el command button pero así parece que no se hace porque tengo qque relacionar la función con el número que escriban en el text box. Si alguien en este foro me pudiera ayudar se lo agradecería muchísimo. Tal vez es muy básico lo que pregunto, pero siempre se empieza por lo básico...jejeje.
ahora bien me dijero por ahi una posible soución que era esta:
Function dblSqrt(dblParameter As Double) As Double
If dblParameter < 0 Then
dblSqrt = -1
Else
dblSqrt = Sqr(dblParameter)
End If
End Function
Private Sub Command1_Click()
Text1.Text = dblSqrt(CDbl(text11.Text))
End Sub
entonces ya lo tenía pero al ejecutar me aparece el siguiente mensaje:
Runtime error '424'
object not defined
que será? no creo que mi visualito esté malo y tenga que instalar otro... o si?
cual es la solución?. Gracias
Feliz Año Nuevo a todos: está es mi primera vez en este foro y comenzaré con una pregunta:
Estoy aprendiendo Visual Basic desde un Libro. El libro pone una función que calcula la raíz cuadrada de un número, pero no sé a que control asignarsela. Para probarla puse en un formulario lo sgte:
- un command button
- un text box
- un label box
Entonces en el label box pongo lo sgte.: Calcular raíz cuadrada
- El text box lo dejo para que el usuario escriba su numero
- El command button es para que cuando el usuario haga clic en él se cambie el número del text box a su raíz cuadrada.
La codificación que entrega el libro es la siguiente:
"
Function dblSqrt(dblParameter As Double) As Double
If dblParameter < 0 Then
dblSqrt = -1
Else
dblSqrt = Sqr(dblParameter)
End If
End Function
"
Sin embargo, no sé realmente donde poner este codigo, ni como relacionar los controles para que esto funcione. Lo único que se me ocurre es llamar la función desde el command button pero así parece que no se hace porque tengo qque relacionar la función con el número que escriban en el text box. Si alguien en este foro me pudiera ayudar se lo agradecería muchísimo. Tal vez es muy básico lo que pregunto, pero siempre se empieza por lo básico...jejeje.
ahora bien me dijero por ahi una posible soución que era esta:
Function dblSqrt(dblParameter As Double) As Double
If dblParameter < 0 Then
dblSqrt = -1
Else
dblSqrt = Sqr(dblParameter)
End If
End Function
Private Sub Command1_Click()
Text1.Text = dblSqrt(CDbl(text11.Text))
End Sub
entonces ya lo tenía pero al ejecutar me aparece el siguiente mensaje:
Runtime error '424'
object not defined
que será? no creo que mi visualito esté malo y tenga que instalar otro... o si?
cual es la solución?. Gracias
Es muy raro que te de error porque lo que te indicaron está bien, lo verifiqué y al menos a mi si me arroja el valor de la raíz cuadrada, lo único malo es que tienes text11.text cuando en realidad es text1.text con un 1 menos, con eso si arroja el error que indicas, a mi me lo saca así:
Error de compilación:
"variable no definida".
Y es por eso, un simple error de sintaxis, y se posiciona en text11.text. Pero de resto, si me saca el valor correcto.
Error de compilación:
"variable no definida".
Y es por eso, un simple error de sintaxis, y se posiciona en text11.text. Pero de resto, si me saca el valor correcto.
Dim numero As String 'Es el segundo valor de la operación
Dim a As Integer 'Indica cuando se entra dentro de la función
Dim valor As Double 'Es el primer valor de la operación
Dim operacion As Double
Dim cantidad As Double 'Contiene el valor de numero
Dim b As Integer 'Contiene el numero de caracteres del valor numero
Dim c As Integer
Dim valores As String
Dim OpAnt As String 'Contiene el index del primer operador seleccionado
Dim f As Integer 'Controla el funcionamiento del tanto porciento
Dim g As Integer 'Controla el funcionamiento de la raiz cuadrada
Dim raiz As Double
'**********************************************
Dim ComaPunto As String
Dim d As Integer
Dim e As Integer
Dim resultado As String
Dim numeros As String
Private Sub Command1_Click(index As Integer)
numero = numero & index
Text1.Text = numero
End Sub
Private Sub Command2_Click()
b = Len(numero)
If b = 0 Then
numero = "0." & numero
Exit Sub
End If
For c = 1 To b
valores = Mid(numero, c, 1)
If valores = "." Then
Exit Sub
End If
Next c
numero = numero & "."
Text1.Text = numero
End Sub
Private Sub Command4_Click(index As Integer)
valor = val(numero)
If a = 0 Then
cantidad = valor
a = 1
Else
operacion = calcular(valor, cantidad, OpAnt)
cantidad = operacion
'*******Pasar coma a punto*********************
'numeros = Trim(Str(cantidad))
'd = Len(numeros)
'For e = 1 To d
'ComaPunto = Mid(cantidad, e, 1)
'If ComaPunto = "," Then
'ComaPunto = "."
'resultado = resultado & ComaPunto
'Else
'resultado = resultado & ComaPunto
'End If
'Next e
'***************FIN****************************
Text1.Text = cantidad
End If
OpAnt = index
If OpAnt = 5 Then
raiz = calculation(cantidad)
cantidad = raiz
Text1.Text = cantidad
End If
numero = ""
End Sub
Private Function calcular(ByVal val As Double, cant As Double, cifra As String) As Double
Select Case cifra
Case 0
calcular = cant + val
Case 1
calcular = cant - val
Case 2
calcular = cant * val
Case 3
If val = 0 Then
MsgBox "Error: No se puede dividir entre cero"
numero = ""
a = 0
valor = 0
Text1.Text = "0"
Else
calcular = cant / val
End If
Case 4
If valor = 0 Then
OpAnt = ""
calcular = cantidad
End If
'Case 5
'calcular = Sqr(cant)
Case 6
If f = 0 Then
calcular = cant * val / 100
f = 1
Else
OpAnt = ""
calcular = cantidad
End If
End Select
End Function
Private Sub Command3_Click()
g = 0
numero = ""
b = 0
a = 0
f = 0
valor = 0
cantidad = 0
Text1.Text = "0"
OpAnt = ""
raiz = 0
End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Unload Form6
End Sub
Private Function calculation(ByVal can As Double) As Double
'If can = 0 Then
'a = 0
'g = 0
'Else
'If g = 0 Then
calculation = Sqr(can)
'g = 1
'a = 0
'Else
'OpAnt = ""
'calculation = cantidad
'End If
'End If
End Function
'*********************************************
Me puedes arreglar el funcionamiento de la raiz cuadrada,gracias lo demas funciona de puta madre.
Dim a As Integer 'Indica cuando se entra dentro de la función
Dim valor As Double 'Es el primer valor de la operación
Dim operacion As Double
Dim cantidad As Double 'Contiene el valor de numero
Dim b As Integer 'Contiene el numero de caracteres del valor numero
Dim c As Integer
Dim valores As String
Dim OpAnt As String 'Contiene el index del primer operador seleccionado
Dim f As Integer 'Controla el funcionamiento del tanto porciento
Dim g As Integer 'Controla el funcionamiento de la raiz cuadrada
Dim raiz As Double
'**********************************************
Dim ComaPunto As String
Dim d As Integer
Dim e As Integer
Dim resultado As String
Dim numeros As String
Private Sub Command1_Click(index As Integer)
numero = numero & index
Text1.Text = numero
End Sub
Private Sub Command2_Click()
b = Len(numero)
If b = 0 Then
numero = "0." & numero
Exit Sub
End If
For c = 1 To b
valores = Mid(numero, c, 1)
If valores = "." Then
Exit Sub
End If
Next c
numero = numero & "."
Text1.Text = numero
End Sub
Private Sub Command4_Click(index As Integer)
valor = val(numero)
If a = 0 Then
cantidad = valor
a = 1
Else
operacion = calcular(valor, cantidad, OpAnt)
cantidad = operacion
'*******Pasar coma a punto*********************
'numeros = Trim(Str(cantidad))
'd = Len(numeros)
'For e = 1 To d
'ComaPunto = Mid(cantidad, e, 1)
'If ComaPunto = "," Then
'ComaPunto = "."
'resultado = resultado & ComaPunto
'Else
'resultado = resultado & ComaPunto
'End If
'Next e
'***************FIN****************************
Text1.Text = cantidad
End If
OpAnt = index
If OpAnt = 5 Then
raiz = calculation(cantidad)
cantidad = raiz
Text1.Text = cantidad
End If
numero = ""
End Sub
Private Function calcular(ByVal val As Double, cant As Double, cifra As String) As Double
Select Case cifra
Case 0
calcular = cant + val
Case 1
calcular = cant - val
Case 2
calcular = cant * val
Case 3
If val = 0 Then
MsgBox "Error: No se puede dividir entre cero"
numero = ""
a = 0
valor = 0
Text1.Text = "0"
Else
calcular = cant / val
End If
Case 4
If valor = 0 Then
OpAnt = ""
calcular = cantidad
End If
'Case 5
'calcular = Sqr(cant)
Case 6
If f = 0 Then
calcular = cant * val / 100
f = 1
Else
OpAnt = ""
calcular = cantidad
End If
End Select
End Function
Private Sub Command3_Click()
g = 0
numero = ""
b = 0
a = 0
f = 0
valor = 0
cantidad = 0
Text1.Text = "0"
OpAnt = ""
raiz = 0
End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Unload Form6
End Sub
Private Function calculation(ByVal can As Double) As Double
'If can = 0 Then
'a = 0
'g = 0
'Else
'If g = 0 Then
calculation = Sqr(can)
'g = 1
'a = 0
'Else
'OpAnt = ""
'calculation = cantidad
'End If
'End If
End Function
'*********************************************
Me puedes arreglar el funcionamiento de la raiz cuadrada,gracias lo demas funciona de puta madre.
