Beim erneuten Durchsehen habe ich entdeckt, dass im o.g. Code 2 Zeilen zu viel, daher
Sub altKollegen()
'Quelldaten in Tabelle1
'
Dim oWst As Worksheet
Dim rngUsed As Range, rngCol As Range, rngTo As Range, rngTo2 As Range
Dim y As Long
Application.ScreenUpdating = False
On Error GoTo errorh
'vorhanden, sonst erstellen
Set oWst = Sheets("Tmp")
'löschen
oWst.Cells.Clear
With Sheets("Tabelle1") 'ggf. ändern
Set rngUsed = .UsedRange
For y = 2 To rngUsed.Columns.Count
Set rngCol = rngUsed.Columns(y)
If y = 2 Then
Set rngTo = oWst.Cells(1, 1)
Else
Set rngTo = oWst.Cells(oWst.Rows.Count, 2).End(xlUp).Offset(1, -1)
End If
rngTo.Value = rngCol.Cells(1).Value
'Set rngCol = rngCol.Offset(1).Resize(rngCol.Rows.Count - 1)
With .UsedRange
.AutoFilter Field:=y, Criteria1:="=1", Operator:=xlAnd
'Sheets("Tabelle1").UsedRange.Columns(1).SpecialCells(12).Copy
Set rngTo2 = Sheets("Tabelle1").UsedRange.Columns(1)
Set rngTo2 = rngTo2.Offset(1).Resize(rngTo2.Rows.Count)
rngTo2.SpecialCells(12).Copy
rngTo.Offset(, 1).PasteSpecial xlPasteValues
.AutoFilter
End With
Next y
End With
On Error GoTo 0
errorh:
Select Case Err.Number
Case 0
oWst.Activate
Case 9
'temp. Protokoll
Sheets.Add
ActiveSheet.Name = "Tmp"
Resume
Case Else
End Select
Set oWst = Nothing
Application.ScreenUpdating = True
End Sub
|