• Jueves 18 de Julio de 2024, 19:51

Autor Tema:  inconveniente con vb de excel  (Leído 3402 veces)

acevedoram

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
inconveniente con vb de excel
« en: Domingo 2 de Mayo de 2010, 20:40 »
0
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

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: inconveniente con vb de excel
« Respuesta #1 en: Lunes 3 de Mayo de 2010, 16:15 »
0
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
  1.  
  2.  
  3. public function Suma(byval sumando as integer, byval Sumador as integer) as long
  4.       Suma= sumando + sumador
  5. end function
  6.  
  7.  
Esta función la utilizo así...
Código: Visual Basic
  1.  
  2. Dim Resul  as long
  3.  
  4. Resul= suma(22,37)
  5.  
  6. ' y también así...
  7. Dim x1 as integer, x2 as integer
  8.  
  9. x1= 144: x2=49
  10. Resul= suma(x1,x2)
  11.  
  12.  

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
  1.  
  2.  
  3. 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....
  4.        Dim k as long, R as long
  5.        if (not(valores)) <> -1 then
  6.            for k= lbound(valores) to ubound(valores)
  7.                R= R + Valores(k)
  8.            next
  9.            suma = R
  10.        else
  11.             Call Err.Raise(9, Me.Name, "La matriz no está declarada...")
  12.        end if
  13. end function
  14.  
  15.  
...luego la función se utiliza así...
Código: Visual Basic
  1.  
  2.     Dim Resul As Long
  3.     Dim n() As Integer
  4.    
  5.     Redim n(1 to 7)
  6.     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
  7.     Resul = Suma(n)
  8.     msgbox resul ' nos muestra el resultado de la suma.
  9.  
  10.  

Espero que puedas entenderlo...
«Ma non troppo»
----> ModoVacaciones = False<----