*g* Und fertig geworden?
Ich habe mal die Berechnung der Zeitdifferenzen neu gemacht
und Deine Prozedur für die Energieberechnung eingefügt.
Als Startzeitpunkt für die Berechnung habe ich zum Test den
Startzeitpunkt des programms und als Ende der Schleife den
Zeitpunkt des Klicks in die Liste mit den Städtenamen
genommen. Das sieht dann so aus:
Option Explicit
Dim start As String
Dim jetzt As String
Dim idx As Integer
Dim Summe_Strahlungsenergie As Double
Dim arMonat
Dim iBreitengr As Integer
Dim iBreitenGrad As Integer
Dim iBreitenmin As Integer
Dim iBreitensec As Integer
Dim iLaengengr As Integer
Dim iLaengenGrad As Integer
Dim iLaengenmin As Integer
Dim iLaengensec As Integer
Dim iDatumDay As Integer
Dim iDatumMonth As Integer
Dim iTagNr As Integer
Dim iUhrzeitStd As Integer
Dim iUhrzeitMin As Integer
Dim iTagesMin As Integer
Dim iNeigungswinkel As Integer
Dim iAzimutwinkel As Integer
Dim iDeklination As Double
Dim iZeitgleichung As Double
Dim iEinstrahlwinkel As Double
Dim PHI As Double
Dim iStrahlungsenergie As Integer
Dim iSonnenzeit As Double
Dim iStundenWinkel As Double
Dim iZeitdifferenz As Double
Dim iAufgangMez As Double
Dim iUntergangMez As Double
Dim arTageseinstrahlung(1, 24) As Integer 'Tageseinstrahlung
Diagramm
Dim pi As Currency
Dim tmp As Double
Dim Breitengrad() As Integer
Dim Breitenmin() As Integer
Dim Breitensec() As Integer
Dim Laengengrad() As Integer
Dim Laengenmin() As Integer
Dim Laengensec() As Integer
Private Sub Form_Load()
start = Now
Ortsauswahl.AddItem „Konstanz“
Ortsauswahl.AddItem „München“
Ortsauswahl.AddItem „Stuttgart“
Ortsauswahl.AddItem „New York“
Ortsauswahl.AddItem „Berlin“
ReDim Breitengrad(0 To Ortsauswahl.ListCount - 1)
ReDim Breitenmin(0 To Ortsauswahl.ListCount - 1)
ReDim Breitensec(0 To Ortsauswahl.ListCount - 1)
ReDim Laengengrad(0 To Ortsauswahl.ListCount - 1)
ReDim Laengenmin(0 To Ortsauswahl.ListCount - 1)
ReDim Laengensec(0 To Ortsauswahl.ListCount - 1)
Breitengrad(0) = 47
Breitenmin(0) = 40
Breitensec(0) = 5
Laengengrad(0) = 9
Laengenmin(0) = 10
Laengensec(0) = 11
Breitengrad(0) = 48
Breitenmin(0) = 8
Breitensec(0) = 5
Laengengrad(0) = 11
Laengenmin(0) = 34
Laengensec(0) = 11
Breitengrad(0) = 48
Breitenmin(0) = 47
Breitensec(0) = 12
Laengengrad(0) = 9
Laengenmin(0) = 11
Laengensec(0) = 4
Breitengrad(0) = 40
Breitenmin(0) = 43
Breitensec(0) = 6
Laengengrad(0) = 74
Laengenmin(0) = 1
Laengensec(0) = 15
Breitengrad(0) = 52
Breitenmin(0) = 30
Breitensec(0) = 0
Laengengrad(0) = 13
Laengenmin(0) = 20
Laengensec(0) = 15
pi = 3.141592654
End Sub
Private Sub Ortsauswahl_Click()
Dim i As Integer
Dim TageImJahr As Integer
Dim MinutenAmTag As Long
Dim tmp As String
Dim Jahresanfang As String
Dim Tagesanfang As String
Summe_Strahlungsenergie = 0
idx = Ortsauswahl.ListIndex
jetzt = Now
For i = 0 To DateDiff(„n“, start, jetzt)
tmp = DateAdd(„n“, i, start)
Jahresanfang = tmp
Tagesanfang = tmp
Mid(Jahresanfang, 1, 5) = „01.01“
Mid(Jahresanfang, 12, 8) = „00:00:00“
Mid(Tagesanfang, 12, 8) = „00:00:00“
TageImJahr = DateDiff(„d“, Jahresanfang, tmp)
MinutenAmTag = DateDiff(„n“, Tagesanfang, tmp)
Berechnung TageImJahr, MinutenAmTag
Next
Label1.Caption = Summe_Strahlungsenergie
End Sub
Private Sub Berechnung(ByVal iTagNr As Integer, ByVal
iSonnenzeit As Integer)
'Deine Berechnung
'Breitengrad
iBreitengr = Breitengrad(idx) + ((Breitenmin(idx) +
(Breitensec(idx) / 60)) / 60)
'Laengengrad
iLaengengr = Laengengrad(idx) + ((Laengenmin(idx) +
(Laengensec(idx) / 60)) / 60)
'Formeln - Deklination
tmp = 360 * (pi / 180) * ((284 + iTagNr) / 365)
iDeklination = ((23.45 * (pi / 180)) * Sin((tmp))) * (180 /
pi)
'Sonnenaufgang h = -50 Bogenminuten = -0.0145
'Zeitdifferenz
iZeitdifferenz = 12 * ((Cos((Sin(-0.0145)) ^ -1) - Sin(0.9163)
* Sin(iDeklination)) / (Cos(0.9163) * Cos(iDeklination))) / pi
'Zeitgleichung
tmp = ((iTagNr - 81) * 0.989 * (pi / 180))
iZeitgleichung = 9.87 * Sin(2 * tmp) - 7.53 * Cos(tmp) - 1.5 *
Sin(tmp)
'MEZ in dezimal
iAufgangMez = (12 - iZeitdifferenz) + (15 - iLaengenGrad) * 4
/ 60
'Untergang MEZ in dezimal
iUntergangMez = (12 + iZeitdifferenz) - (15 - iLaengenGrad) *
4 / 60
'Stundenwinkel
iStundenWinkel = 0.25 * (720 - iSonnenzeit)
'Einstrahlwinkel
tmp = (pi / 180)
PHI = (Cos(iNeigungswinkel * (tmp)) * Sin(iBreitengr * (tmp))
- _
Cos(iBreitengr * (tmp)) * Cos(iAzimutwinkel * (tmp)) * _
Sin(iNeigungswinkel * (tmp))) * Sin(iDeklination * (tmp)) + _
(Sin(iBreitengr * (tmp)) * Cos(iAzimutwinkel * (tmp)) * _
Sin(iNeigungswinkel * (tmp)) + Cos(iNeigungswinkel * (tmp)) *
_
Cos(iBreitengr * (tmp))) * Cos(iDeklination * (tmp)) * _
Cos(iStundenWinkel * (tmp)) + Sin(iAzimutwinkel * (tmp)) * _
Sin(iNeigungswinkel * (tmp)) * Cos(iDeklination * (tmp)) * _
Sin(iStundenWinkel * (tmp))
iEinstrahlwinkel = ((PHI))
'Strahlungsenergie
iStrahlungsenergie = iEinstrahlwinkel * 1357
'Ergebnis
'If (iStrahlungsenergie > 0) Then
'tbErg.Text = iStrahlungsenergie
'Else
'tbErg.Text = iStrahlungsenergie
'Das Ergebnis der einen Minute in ein Textfeld zu schreiben
macht keinen Sinn,
'deshalb …
Summe_Strahlungsenergie = iStrahlungsenergie
End Sub
Wenn Du Probleme mit Deinem Code hast, kannst Du Dir den
Vorschlag ja noch mal ansehen, bei mir rechnet das Programm.
-) Keine Ahnung ob die Ergebnisse sinnvoll sind, das kann ich
nicht beurteilen.
Gruß, Rainer
OK, setze mich jetzt gleich wieder dran. -Ich versuche gleich erstmal
die Daten aus meinen Schleifen der Reihe nach auszulesen. Mit Hilfe
des von Alex vorgeschlagenen Syntax. Falls es Dich interessiert, ich
versuche mit Hilfe der ausgelesenen Einzelpunkte und dem Abstand
(step) ein Trapez zu bilden und den Flächeninhalt der positiven
Trapeze aufzusummieren. -So bekomme ich dann die gesamte
Strahlungsenergie über die Zeit.
Vielen Dank für Deinen Vorschlag. Sobald ich wieder Luft habe oder
die erste Variante nicht funktioniert werde ich ihn mir genauer
anschauen.
-Also falls DU einen besseren (einfacheren) Vorschlag hast wie man
Daten fortlaufen aus FOR-NEXTSchlaufen liest -bitte posten.
Danke Rainer
Servus