Hallöchen,
ich habe Excel 2002.
Ich habe ein Programm erhalten welches noch nicht ganz auf meine Bedürfnisse abgestimmt ist. Ich habe schon ein paar Sachen verändert, aber hier komm ich nicht weiter. Es ist so: Bei dem folgenden Code werden die Zahlen pro Monat in die dafür vorgesehenen Zellen eingefügt. Allerdings bräuchte ich immer die Summe vom Januar bis zum jeweiligen Monat, d.h. im Januar brauche ich nur die Zahl vom Januar, im Februar die Zahl vom Januar plus Februar usw. Jetzt habe ich mir überlegt dass da eine Schleife rein muss, bin mir aber nicht im klaren wie das Aussehen soll. Das Problem ist nämlich dass nicht jeder Monat eine Zahl hat, das bedeutet das Programm muss die letzte eingetragene Zahl suchen, allerdings ist die Spalte nicht unbegränzt nach oben offen, da dort schon die anderen Tabellen anfangen. Zwischen den Tabellen gibt es immer eine grauunterlegte Zeile, kann man dies als Stoppsignal nehmen? Wenn ja, wie stell ich das an?
Damit es euch ein wenig verständlicher wird ist unten der Code.
Sub AddKstToJahresdiagramm(ByVal kst As Integer, ByVal wert As Integer, ByVal month As Integer)
' Finden des Projekts zu der Kostenstelle
Dim projektName As String
If wert = 0 Then
Exit Sub
End If
With Tabelle3
' finde das projekt zu der kst
Dim currZeile As Integer
currZeile = 7
Do While (.Cells(currZeile, 4).Value "" Or .Cells(currZeile, 5).Value "" Or .Cells(currZeile, 6).Value "")
If .Cells(currZeile, 4).Value = kst Then
projektName = .Cells(currZeile, 8).Value
Exit Do
End If
currZeile = currZeile + 1
Loop
If projektName = "" Then
MsgBox "Kein Projektname für Kostenstelle " & kst & " gefunden"
Exit Sub
End If
' Finden der Tabelle für dieses Projekt in der Jahresübersicht
currZeile = jahresdiagrammZeile
Do While (.Cells(currZeile, 1).Value "ENDE DER TABELLE")
If .Cells(currZeile, 1).Value = projektName Then
' Suche den passenden monat
Dim i As Integer
For i = 1 To 24
If .Cells(currZeile + i, 1).Value = month Then
' Finden der Kostenstelle-Spalte
Dim j As Integer
j = 1
Do While (.Cells(jahresdiagrammZeile, j).Value "")
If .Cells(jahresdiagrammZeile, j).Value = kst Then
' Gibt es bereits einen Wert für diese Konstelation?
Dim neuerWert As Integer
If .Cells(currZeile + i, j).Value "" Then
neuerWert = .Cells(currZeile + i, j).Value + wert
Else
neuerWert = wert
End If
' den neuen Wert eintragen
.Cells(currZeile + i, j).Value = neuerWert
End If
j = j + 1
Loop
End If
Next i
End If
currZeile = currZeile + 1
Loop
End With
End Sub
[MOD] - Pre-Tag eingefügt