Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Vba en excell

Estas en el tema de Vba en excell en el foro de Visual Basic clásico en Foros del Web. Hola,soy nueva en esto asi que espero que podais ayudarme...estoy haciendo mi proyecto fin de carrera y para ello necesito el VBA de excell. Me ...
  #1 (permalink)  
Antiguo 26/12/2010, 06:08
 
Fecha de Ingreso: diciembre-2010
Mensajes: 1
Antigüedad: 13 años, 3 meses
Puntos: 0
Vba en excell

Hola,soy nueva en esto asi que espero que podais ayudarme...estoy haciendo mi proyecto fin de carrera y para ello necesito el VBA de excell.

Me encontrado con el error 13(no coinciden los tipos) y por mas que miro no se porque os pongo la funcion:

Function Radiacion_extraterrestre(f As Integer, t_orto As Single, t_ocaso As Single, h As Integer, Ndia As Integer, col_dia As Integer, col_Go As Integer) As Single

Dim pi As Double
Dim m As Double
Dim T As Single
Dim TST(24) As Single
Dim w_rad(24) As Double
Dim l As Double
Dim d As Double
Dim d_rad As Double
Dim b As Double
Dim lat As Double
Dim cte As Integer
Dim Go As Double
Dim Kt As Double
Dim Dh As Double
Dim R_directa As Double
Dim lon As Single
Dim lat_rad As Double
Dim lon_rad As Single
Dim lon_huso As Single
Dim gamma As Single
Dim TSV(24) As Single
Dim Et As Single
Dim AO As Integer
Dim w(24) As Double
Dim N As Integer
Dim wo As Double


pi = 3.14159265358979
'Primero lectura orden de día = N

N = Ndia

'Latitud y longitud del punto de observación y longitud huso.Datos dados
lat = H2.Cells(8, 2).Value + H2.Cells(8, 3).Value / 60 + H2.Cells(8, 4).Value / 3600
lon = H2.Cells(9, 2).Value + H2.Cells(9, 3).Value / 60 + H2.Cells(9, 4).Value / 3600
lat_rad = lat * pi / 180
lon_rad = lon * pi / 180
lon_huso = H2.Cells(10, 2).Value + H2.Cells(10, 3).Value / 60 + H2.Cells(10, 4).Value / 3600

'Declinación solar d (º)(Aprox. Cooper)
d = 23.45 * Sin(2 * pi / 365 * (N + 284))
'Ecuación del tiempo Et (min) (Aprox. Spencer)
gamma = WorksheetFunction.Radians(360 / 365 * (N - 1)) 'en rad
Et = (0.000075 + 0.001868 * Cos(gamma) - 0.032077 * Sin(gamma) - 0.014615 * Cos(2 * gamma) - 0.04089 * Sin(2 * gamma)) * 229.18

'Tiempo Solar Verdadero (h)

If N > 87 And N < 303 Then
AO = 2
ElseIf N <= 87 Then
AO = 1
ElseIf N >= 303 Then
AO = 1
End If

TSV(h) = h - AO + (lon - lon_huso) / 15 + Et / 60 - 12
TSV(h - 1) = (h - 1) - AO + (lon - lon_huso) / 15 + Et / 60 - 12

'Ángulo Horario Solar (º)
w(h) = 15 * TSV(h)
w(h - 1) = 15 * TSV(h - 1)

'angulo horario en radianes
w_rad(h) = w(h) / 180 * pi
w_rad(h - 1) = w(h - 1) / 180 * pi

'angulo diario

l = 2 * pi * (N - 1) / 365

'declinación solar(º) - Modelo Spencer
d = (180 / pi) * (0.006918 - 0.399912 * Cos(l) + 0.070257 * Sin(l) - 0.006758 * Cos(2 * l) + 0.000907 * Sin(2 * l) - 0.002697 * Cos(3 * l) + 0.00148 * Sin(3 * l))

'declinación solar (rad)
d_rad = d * pi / 180

'distancia solar-tierra(unidades astronomicas) Spencer 1971
'b=1/d^2
b = 1.00011 + 0.034221 * Cos(l) + 0.00128 * Sin(l) + 0.000719 * Cos(2 * l) + 0.00077 * Sin(2 * l)

'wo angulo solar a mitad del intervalo de tiempo entre t1 y t2

wo = (w_rad(h) - w_rad(h - 1)) / 2

'radiación global extraterrestre
If h >= t_orto And h <= t_ocaso Then
cte = 1368 ' constante solar (w/m2)
Go = cte * b * [Sin(d_rad) * Sin(lat_rad) + (Cos(d_rad)*(24/pi) * Cos(pi/24) * Cos(wo))]
H7.Cells(f, col_Go).Value = Go
Else
H7.Cells(f, col_Go).Value = 0
End If
End Function


Cuando le doy a ejecutar me da el error en Go espero contestación y daros la gracias de ante mano me corre un poco de prisa porque hasta que no encuentre una solución no puedo seguir

GRACIAS!
  #2 (permalink)  
Antiguo 26/12/2010, 11:54
Avatar de erbuson  
Fecha de Ingreso: noviembre-2009
Mensajes: 701
Antigüedad: 14 años, 5 meses
Puntos: 53
Respuesta: Vba en excell

Hola, deberías confirmar exactamente donde se produce el error.
Entiendo que es en la sentencia: H7.Cells(f, col_Go).Value = Go

De ser así y suponiendo que quieres referirte al rango ¿ Que significa H7 ? porque creo que por ahí es por donde esta el error.

Saludos
__________________
Agradecer a quien te enseñó, es enseñar lo que de él aprendiste.
Recuerda: Decir gracias, poco cuesta y mucho vale ...

Etiquetas: excell, vba
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:21.