AW: s
29.10.2007 18:43:00
Chris
Servus Lisa,
das funktioniert:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim suche As Range, Finde As Range
Dim strErste As String
Dim letzte As Long, reihe As Long
Dim LastcellCol As Range
Dim LastCol As Long
If Not Intersect(Target, Range("A1")) Is Nothing Then
Set LastcellCol = Sheets("Tabelle2").Cells.Find("*", , , , xlByColumns, xlPrevious)
If Not LastcellCol Is Nothing Then
LastCol = LastcellCol.Column
If LastCol 1 Then
Sheets("Tabelle2").Range(Sheets("Tabelle2").Cells(1, 2), Sheets("Tabelle2").Cells(2, _
LastCol)).ClearContents
End If
End If
letzte = Sheets("Tabelle3").Cells(Rows.Count, 1).End(xlUp).Row
Set Finde = Sheets("Tabelle3").Range("A3:A" & letzte)
Set suche = Finde.Find(what:=Target, LookAt:=xlWhole)
If Not suche Is Nothing Then
strErste = suche.Address
Dim Helfer As Integer
Helfer = 0
Sheets("Tabelle2").Cells(1, 2 + Helfer) = suche.Offset(0, 2)
Dim zähler As Integer
zähler = 0
Do
If suche.Offset(0, 2) = Sheets("Tabelle2").Cells(1, 2 + Helfer) Then
zähler = zähler + 1
Sheets("Tabelle2").Cells(2, 2 + Helfer) = zähler
Else
zähler = 1
Helfer = Helfer + 1
Sheets("Tabelle2").Cells(1, 2 + Helfer) = suche.Offset(0, 2)
Sheets("Tabelle2").Cells(2, 2 + Helfer) = zähler
End If
Set suche = Finde.FindNext(suche)
Loop While Not suche Is Nothing And suche.Address strErste
End If
End If
Set suche = Nothing
Set Finde = Nothing
Set LastcellCol = Nothing
End Sub
Irgendwie lag der Fehler in dieser Zeile:
If suche.Offset(0, 2) = Sheets("Tabelle2").Cells(1, 2 + Helfer) Hier hatte ich Sheets(2)... stehen und das glaube ich hat Excel durcheinander gebracht.
Jetzt habe ich alle ausdeklariert, wenn du jetzt dieses Makro in Tabelle2 kopierst, dann kannst du Tabelle1 löschen und es funktioniert, wie es soll.
Dann kannst du die Arbeitsmappe verwenden, sonst musst du eben die ("Tabellexy") anpassen.
Gruß
Chaos