Beim Versuch, die gefilterten Zellen in einer Schleife zu filtern und dann zu kopieren, wird die Fehlermeldung "Einfügemethode der Arbeitsblattklasse fehlgeschlagen" angezeigt.
Es scheint zu scheitern, weil ich eine Schleife verwende. Ich habe andere Methoden zum Einfügen von Spezialversuchen ausprobiert, aber dies scheint nicht zu funktionieren. Bitte helfen Sie
Sub Split()
Dim wsYes As Worksheet
Set wsYes = Worksheets("YES")
With wsYes
Dim myRange As Range
Set myRange = .Range("A2", .Range("A2").End(xlDown))
myRange.Copy .Cells(1, .Columns.Count) "copy to far right column
.Cells(1, .Columns.Count).Resize(myRange.Rows.Count, 1).RemoveDuplicates 1, xlNo
Set myRange = .Range(.Cells(1, .Columns.Count), .Cells(1, .Columns.Count).End(xlDown))
For Each MyCell In myRange
Dim sName As String
sName = UCase(MyCell.Value)
Range("A1").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$B$9").AutoFilter Field:=1, Criteria1:= _
sName
Range("B:B").Select
Selection.Copy
Dim wsNew As Worksheet
Set wsNew = Sheets.Add(After:=Sheets(Sheets.Count)) " creates a new worksheet
wsYes.Range("B:B").Copy
With wsNew
.Name = sName
.Range("A1").Value = "Column Name"
.Range("A1").Font.Bold = True
.Range("A2").Value = sName
.Range("B1").Select
ActiveSheet.Paste
End With
Next MyCell
myRange.Clear
End With
End Sub
Danke im Voraus
Antworten:
0 für die Antwort № 1Sie müssen Kopieren und Einfügen zusammen haben, ohne andere Dinge zu tun wsNew Blatt
Sub Split()
Dim wsYes As Worksheet
Set wsYes = Worksheets("YES")
With wsYes
Dim myRange As Range
Set myRange = .Range("A2", .Range("A2").End(xlDown))
myRange.Copy .Cells(1, .Columns.Count) "copy to far right column
.Cells(1, .Columns.Count).Resize(myRange.Rows.Count, 1).RemoveDuplicates 1, xlNo
Set myRange = .Range(.Cells(1, .Columns.Count), .Cells(1, .Columns.Count).End(xlDown))
For Each MyCell In myRange
Dim sName As String
sName = UCase(MyCell.Value)
wsYes.Select
Range("A1").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$B$9").AutoFilter Field:=1, Criteria1:=sName
wsYes.Range("B:B").Select
Selection.Copy
Dim wsNew As Worksheet
Set wsNew = Sheets.Add(After:=Sheets(Sheets.Count)) " creates a new worksheet
With wsNew
.Name = sName
.Range("A1").Value = "Column Name"
.Range("A1").Font.Bold = True
.Range("A2").Value = sName
" moved copy and paste tasks one after the other
wsYes.Range("B:B").Copy
.Columns("B:B").Select
ActiveSheet.Paste
End With
Next MyCell
myRange.Clear
End With
End Sub
0 für die Antwort № 2
Probieren Sie diesen Code aus.
Sub Split()
Dim MyCell As Range
Dim wsYes As Worksheet
Set wsYes = Worksheets("YES")
With wsYes
Dim myRange As Range
Set myRange = .Range("A2", .Range("A2").End(xlDown))
myRange.Copy .Cells(1, .Columns.Count) "copy to far right column
.Cells(1, .Columns.Count).Resize(myRange.Rows.Count, 1).RemoveDuplicates 1, xlNo
Set myRange = .Range(.Cells(1, .Columns.Count), .Cells(1, .Columns.Count).End(xlDown))
For Each MyCell In myRange
Dim sName As String
sName = UCase(MyCell.Value)
With wsYes
.Range("A1").Select
.Selection.AutoFilter
.Range("$A$1:$B$9").AutoFilter Field:=1, Criteria1:=sName
Dim wsNew As Worksheet
Set wsNew = Sheets.Add(After:=Sheets(Sheets.Count)) " creates a new worksheet
End With
With wsNew
.Name = sName
.Range("A1").Value = "Column Name"
.Range("A1").Font.Bold = True
.Range("A2").Value = sName
.Range("B1").Select
wsYes.Range("B:B").Copy
ActiveSheet.Paste
End With
Next MyCell
myRange.Clear
End With
End Sub
Es scheint wie nach dem Machen A1
Fett es löschte einen Puffer, so dass Sie nichts kopiert hatten.