AW: For each Zelle in Target
05.04.2011 22:37:48
Gerd
Hallo Udo,
genau deinen Vorschlag hatte ich auf das gezeigte Codeschnipsel schon gemacht.
Das Risiko, des nicht eingeschränkten Target ist nach Rückfrage gewollt.
Dann schauen wir mal, Chris.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range, Ziel As Range, Zelle1 As Range, Zelle2 As Range, Zelle3 As Range
Dim i As Integer
Dim varCheck As Variant, intCt As Integer, anzahlPF As Integer
On Error GoTo Fehler
For Each Zelle In Intersect(Target, Columns("K:K,O:O,W:W,AA:AA"))
Select Case Zelle.Row
Case 46 To 53: Set Ziel = Worksheets(3).Cells(44, 10)
Case 85 To 92: Set Ziel = Worksheets(3).Cells(83, 10)
Case 123 To 131: Set Ziel = Worksheets(3).Cells(122, 10)
End Select
If Not Ziel Is Nothing Then
Ziel.Value = Ziel.Value - Worksheets(5).Cells(Zelle.Row, Zelle.Column).Value
Select Case Zelle.Value
Case "LP"
Ziel.Value = Ziel.Value + 0.5
Worksheets(5).Cells(Zelle.Row, Zelle.Column).Value = "0.5"
Case "TRR"
Ziel.Value = Ziel.Value + 0.5
Worksheets(5).Cells(Zelle.Row, Zelle.Column).Value = 0.5
Case "------"
Worksheets(5).Cells(Zelle.Row, Zelle.Column).Value = ""
Case Else
Ziel.Value = Ziel.Value + 1
Worksheets(5).Cells(Zelle.Row, Zelle.Column).Value = "1"
End Select
Set Ziel = Nothing
End If
Next Zelle
Set Zelle1 = Range("J24")
Set Zelle2 = Range("B45")
Set Zelle3 = Range("B84")
If Range("K34").Value > 0 Then
If Range("J44").Value > Range("J37").Value Then
Zelle1.Font.ColorIndex = 3
Else
Zelle1.Font.ColorIndex = 1
End If
Else
If Range("J44").Value > Range("J45").Value Then
Zelle1.Font.ColorIndex = 3
Else
Zelle1.Font.ColorIndex = 1
End If
End If
If Range("B66").Value > Range("B65").Value Then
Zelle2.Font.ColorIndex = 3
Else: Zelle2.Font.ColorIndex = 1
End If
If Range("B105").Value > Range("B104").Value Then
Zelle3.Font.ColorIndex = 3
Else: Zelle3.Font.ColorIndex = 1
End If
For i = 21 To 140 Step 39 ' HIER BEREICH ERWEITERN
If Range("J" & i).Value > 0 Then Range("L10").Value = Range("L10").Value + 1
Next i
varCheck = Array("J44:J45", "J99:J100", "J109:J110")
anzahlPF = (UBound(varCheck) + 1) * -1
For intCt = 0 To UBound(varCheck)
anzahlPF = anzahlPF + Abs(Range(Split(varCheck(intCt), ":")(0)) >= Range(Split(varCheck( _
intCt), ":")(1)))
Next
Range("L11").Value = anzahlPF
Fehler:
Application.EnableEvents = True
End Sub
Gruß Gerd