Programación General > Visual Basic para principiantes
inconveniente con vb de excel
(1/1)
acevedoram:
Hola!!
estoy haciendo el metodo de la regla falsa y el metodo de la secante en vb de excel pero al ejecutar el codigo que he hecho me sale un mensaje de error que dice que se esperaba una matriz... If f(x0) = 0 Then
El error me sale en f
estoy aprendiendo a programar y no se que significa... si me pueden ayudar muchas gracias
Nebire:
No has puesto la declaración de la función f, por lo que jugamos a adivinar....
...parece ser que la función espera una matriz y tu le estás asando una variable que no es una matris...
A ver si lo entiendes mejor con un ejemplo:
Creo una función para hacer una suma como la siguiente...
--- Código: Visual Basic --- public function Suma(byval sumando as integer, byval Sumador as integer) as long Suma= sumando + sumadorend function Esta función la utilizo así...
--- Código: Visual Basic --- Dim Resul as long Resul= suma(22,37) ' y también así...Dim x1 as integer, x2 as integer x1= 144: x2=49Resul= suma(x1,x2)
Pero claro no siempre vamos a querer sumar 2 números, también podríamos sumar 3 y 4 y 5, ..y lógicamente no vamos a tener una función para cada posibilidad. entonces vb provee 2 soluciones una es usando un parámetro llamado paramarray y otro es usando una matriz. Nos vamos a ceñir en este que es tu caso.
Fíjate en la diferencia que supone la misma función pero aplicando una matriz:
--- Código: Visual Basic --- public function Suma(byref Valores() as integer) as long ' nota el paréntesis detrás de valores que denota una matriz y nota como debo pasarlo como 'byref' nunca byval para una matriz, pero esto ya te lo indicaría vb.... Dim k as long, R as long if (not(valores)) <> -1 then for k= lbound(valores) to ubound(valores) R= R + Valores(k) next suma = R else Call Err.Raise(9, Me.Name, "La matriz no está declarada...") end ifend function ...luego la función se utiliza así...
--- Código: Visual Basic --- Dim Resul As Long Dim n() As Integer Redim n(1 to 7) n(0)=5: n(1)=22: n(2)=567: n(3)=1234: n(4)= -456: n(5)= 96: n(5)=11: n(7)= n(2)*3 ' n(6) vale 0 Resul = Suma(n) msgbox resul ' nos muestra el resultado de la suma.
Espero que puedas entenderlo...
Navegación
Ir a la versión completa