AW: Addition mehrerer Zellen mit VBA
20.09.2007 04:40:44
Wuxinese
Hallo Born,
fuege bitte mal den untenstehenden Code in Dein Workbook ein und dann gib als aktuelle Zeile (dReihe) 26 ein. Ich denke, jetzt macht es das, was Du willst.
Wenn Du das Makro Schrittweise durchlaufen laesst und einen "Watch" fuer alle Variablen setzt, dann kannst Du das Ganze leichter nachvollziehen, ich gebe zu es ist etwas konfus :-) Evtl. musst Du die Zeilen noch anpassen. Ich bin jetzt davon ausgegangen, dass, wenn ab Zeile 26 (Excelzeile 27) aktualisiert wird, nachgeschaut wird, ob in Spalte B der Zeile 25 (Excelzeile 26) eine Zahl steht. Wenn ja, sucht das Makro in den 4 darueberliegenden Zeilen nach Paaren, die die jeweilige Zahl aus Spalte B enthalten und setzt alle diese Spalten dann in den folgenden Zeilen auf Null (Dieses Problem ist WIRKLICH schwer zu erklaeren... ;-))
Kann es eigentlich vorkommen, dass Du z. B. die Spalte 1 in dem Bereich gleichzeitig auf Nullsetzen sollst, aber auch 1 Addieren - wenn ja, musst Du das Makro dann da auch noch anpassen...
Gruss
Rainer
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = ("$N$1") Then
Dim dReihe, i, k, l, ctr As Double
ctr = 2
Dim paarw(1 To 5) As Double
dReihe = Range("M1").Value
If Sheet1.Range("N1") = 1 Then
If Range("B" & dReihe) "" Then
paarw(1) = Range("b" & dReihe)
For i = dReihe - 3 To dReihe
If Sheet1.Cells(i, 7 + paarw(1)) = 1 Then
For k = 1 To 5
If Not k = paarw(1) Then
If Sheet1.Cells(i, 7 + k) = 1 Then
paarw(ctr) = k
ctr = ctr + 1
Exit For
End If
End If
Next k
End If
Next i
End If
For i = dReihe + 1 To dReihe + 4
For k = 1 To 5
Sheet1.Cells(i, 2 + k) = Sheet1.Cells(dReihe, 2 + k) + Sheet1.Cells(2, 7 + k)
Next k
If ctr > 2 Then
For k = 1 To ctr
Sheet1.Cells(i, 2 + paarw(k)) = "0"
Next k
End If
Next i
End If
End If
End Sub