AW: Tabelle nach Kriterium aufteilen
08.02.2006 08:44:08
Daniele
hier ich habe es selbst mal versucht also den Teil mit der InputBox, aber wie zu erwarten klappts leider nicht.
Überall wo ich was verändert habe steht dahinter ein kommentar...'DANIELE
Sub KritToSheet()
Dim objShSource As Worksheet, objSh As Worksheet
Dim rng As Range, rngCopy As Range
Dim varTemp As Variant
Dim strFind As String, strFirst As String
Dim lngLast As Long, lngAct As Long
Dim Spalte As String 'DANIELE
Spalte = Val(InputBox("Spaltennummer:", "Tabelle aufteilen")) 'DANIELE
On Error GoTo ErrExit
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Calculation = xlCalculationManual
.Cursor = xlWait
End With
Set objShSource = Sheets("Tabelle1") 'Quelltabelle - anpassen
With objShSource
lngLast = .Cells(Rows.Count, Spalte).End(xlUp).Row 'DANIELE
lngAct = lngLast
varTemp = .Range("A2:IV" & lngLast)
Do While lngAct > 1
strFind = .Cells(2, Spalte) 'DANIELE
Set rng = .Range("X2:X" & lngAct).Find(what:=strFind, lookat:=xlWhole)
If Not rng Is Nothing Then
strFirst = rng.Address
Do
If rngCopy Is Nothing Then
Set rngCopy = .Rows(rng.Row)
Else
Set rngCopy = Union(rngCopy, .Rows(rng.Row))
End If
Set rng = .Range("X2:X" & lngAct).FindNext(rng)
Loop While Not rng Is Nothing And strFirst <> rng.Address
End If
If Not rngCopy Is Nothing Then
Set objSh = Worksheets.Add(after:=Sheets(Sheets.Count))
On Error Resume Next
objSh.Name = strFind
If Err.Number <> 0 Then
objSh.Name = strFind & Format(Now, "hhmmss")
Err.Clear
End If
On Error GoTo ErrExit
rngCopy.Copy objSh.Cells(2, 1)
objShSource.Rows(1).Copy objSh.Rows(1)
rngCopy.Delete
Set rngCopy = Nothing
Set objSh = Nothing
End If
lngAct = .Cells(Rows.Count, Spalte).End(xlUp).Row 'DANIELE
Loop
.Range("A2:IV" & lngLast) = varTemp
End With
ErrExit:
Set objShSource = Nothing
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = xlCalculationAutomatic
.Cursor = xlDefault
End With
End Sub