For next schleifen kombinieren und Summenbildung

Hallo,

So, jetzt sollte ich noch ein MSChart für meine fornext
Schleife
hinbekommen.

ob das klappt? Ich bin skeptisch.

Was setze ich für die „?“ ein?
MSChart:
With MSChart1
.ColumnCount = 1
.RowCount = (1440 - TagesminutenStart) + (((TagImJahrEnde - 1) - (TagImJahrStart + 1)) * 1400) + TagesminutenEnde

Un din Deinen drei Schleifen:
.Row = … Das mußt Du entweder ausrechnen, oder einen Counter mit laufen lassen. Dazu würde ich reten, dann sähe der Code (Deine Drei Schleifen) so wie unten aus. So etwas zähle ich immer in ‚n‘.

.SetData n , 1, Strahlungsenergie, false

Das gleube ich nicht, in Deinem Code ist ‚Strahlungsenergie‘ ja schon eine Summe, Du willst da C rein schreiben.

Die erste Schleife würde dann so aussehen,

'Schritt 1 (Erster Tag)

n =0

For Tagesminuten = TagesminutenStart To 1440 Step Schritt
 A = Tagesminuten
 B = TagImJahrStart
 C = A + B
 intensität = intensität + C \* Schritt
 n = n + 1
 MSChart1.Row = n
 MSChart1.Data = C
Next Tagesminuten

Dein Problem, Row ist auf Integer begrenzt. Deine Schleife übersteigt aber 32000 weit, denke ich, dann steigt das Programm aus.

Du willst doch nur die Kurve plotten? Das geht in einer Picturebox recht einfach. Wenn Du mit MSChart arbeiten willst, mußt Du Dir vor Deinen Schleifen den Wert für die Variable ‚Schritt‘ berechnen und dafür sorgen, daß Du insgesamt weniger als 32000 Schritte hast.

Gruß, Rainer

Hi Dominik,

Was setze ich für die „?“ ein?
MSChart:
With MSChart1.DataGrid
.ColumnCount = 1
.RowCount = ?
.SetData ?, 1, Strahlungsenergie, false

*g* das Das gleube ich nicht, in Deinem Code ist ‚Strahlungsenergie‘ ja schon eine Summe, Du willst da C rein schreiben. stimmt wohl so nicht ganz, oder? Du möchtset die Krve sicher nicht für jede Minute, sondern für jeden Tag haben.
Dann mußt Du noch einmal pro Tag eine Summe bilden, die ‚Rows‘ werden davon auch viel weniger … das sieht dann schon besser aus.

.RowCount = ((TagImJahrEnde - 1) - (TagImJahrStart + 1)) +2

'Schritt 1 (Erster Tag)
 n =0
 For Tagesminuten = Tagesminuten
 Start To 1440 Step Schritt 
 A = Tagesminuten 
 B = TagImJahrStart 
 C = A + B 
 intensität = intensität + C \* Schritt
 Tagessumme = Tagessumme + C \* Schritt
 Next Tagesminuten 
 n = n + 1 
 MSChart1.Row = n 
 MSChart1.Data = Tagessumme

'Schritt 2 (zweiter bis vorletzter Tag)
 For TagImJahr = (TagImJahrStart + 1) To (TagImJahrEnde - 1) Step 1
 For Tagesminuten = 1 To 1440 Step 1
 A = Tagesminuten
 B = TagImJahr
 C = A + B
 intensität = intensität + C \* Schritt
 Tagessumme = Tagessumme + C \* Schritt
 Next Tagesminuten
 n = n + 1 
 MSChart1.Row = n 
 MSChart1.Data = Tagessumme
 Next TagImJahr
 
... und so weiter ...

Gruß, Rainer

noch eine Korrektur
Hi Dominik,

… und noch eine Fehler entdeckt, Die Variable ‚Tagessumme‘ muß doch immer zurückgesetzt werden … das ist nicht mein Tag heute. ;-( Ich glaube, ich programmier heute besser nichts.

'Schritt 2 (zweiter bis vorletzter Tag) 
 For TagImJahr = (TagImJahrStart + 1) To (TagImJahrEnde - 1)
 Tagessumme = 0
 For Tagesminuten = 1 To 1440 Step Schritt
 A = Tagesminuten 
 B = TagImJahr 
 C = A + B 
 intensität = intensität + C \* Schritt 
 Tagessumme = Tagessumme + C \* Schritt 
 Next Tagesminuten 
 n = n + 1 
 MSChart1.Row = n 
 MSChart1.Data = Tagessumme 
Next TagImJahr

Gruß, Rainer

Ich kämpfe aber im moment funktioniert das MSChart überhauptnicht
Trozdem dANKE Reiner

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

ist Dir aufgefallen, daß ich aus …

With MSChart1.DataGrid

With MSChart1

gemacht hatte? Hätte ich das betonen sollen?

Gruß, Rainer

Hi Dominik,
ich habe mal ein kleines Beispiel zusammengeschraubt, eventuell hilft Dir das ja.

Private Sub Command1\_Click()
 Dim i As Integer
 Dim r As Integer
 Dim w As Integer
 Randomize Timer
 w = 100
 MSChart1.ColumnCount = 1
 MSChart1.RowCount = 1000
 For i = 1 To MSChart1.RowCount - 1
 MSChart1.Row = i
 r = Int(Rnd(1) \* 3) - 1
 w = w + r
 MSChart1.Data = w
 Next
End Sub

Gruß, Rainer