Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1884to1888
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Kopieren und Sortieren mit VBA

Kopieren und Sortieren mit VBA
09.06.2022 08:26:27
U.
Ich möchte mit Hilfe einer VBA-Programmierung Daten aus einem Tabellenblatt in ein anderes Tabellenblatt kopieren und gleichzeitig dort sortieren lassen.
Das Kopieren klappt, beim Sortieren eines gewünschten Bereiches erhalte ich einen 'Laufzeitfehler 1004': "Die Select-Methode des Range-Objektes konnte nicht ausgeführt werden."
Wenn ich den Sortier-Code alleine im Zieltabellenblatt ("Tabelle2") ausführe, dann funktioniert er einwandfrei, nur eben nicht in dieser Kombination aus einem anderen Tabellenblatt heraus.
Letzteres wäre aber für mich die eleganter Möglichkeit.
Vielleicht kann mir jemand helfen.

Private Sub Kopieren_und_Sortieren_Click()
ActiveSheet.Range("A1:R650").Copy Destination:=ThisWorkbook.Worksheets("Tabelle2").Range("A1")
ThisWorkbook.Worksheets("Tabelle2").Range("B3:D12").Select
ThisWorkbook.Worksheets("Tabelle2").Sort.SortFields.Clear
ThisWorkbook.Worksheets("Tabelle2").Sort.SortFields.Add2 Key:=Range( _
"D3:D12"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ThisWorkbook.Worksheets("Tabelle2").Sort.SortFields.Add2 Key:=Range( _
"B3:B12"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ThisWorkbook.Worksheets("Tabelle2").Sort
.SetRange Range("B3:D12")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
EndSub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopieren und Sortieren mit VBA
09.06.2022 08:38:44
UweD
Hallo
du musst das entsprechende Blatt im Range mit angeben.
Am besten so.

Private Sub Kopieren_und_Sortieren_Click()
Dim TB2 As Worksheet
Set TB2 = Sheets("Tabelle2")
ActiveSheet.Range("A1:R650").Copy Destination:=TB2.Range("A1")
'TB2.Range("B3:D12").Select
With TB2.Sort.SortFields
.Clear
.Add2 Key:=TB2.Range("D3:D12"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
.Add2 Key:=TB2.Range("B3:B12"), SortOn:=xlSortOnValues, _
Order:=xlAscending, DataOption:=xlSortNormal
End With
With TB2.Sort
.SetRange TB2.Range("B3:D12")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
LG UweD
Anzeige
AW: Kopieren und Sortieren mit VBA
09.06.2022 08:40:22
Daniel
Hi
wenn man nicht auf dem aktiven Tabellenblatt arbeitet, muss man das Tabellenblatt vor JEDEM Range, Cells, Columns oder Rows angeben.
Wenn man mit dem Recorder arbeitet, ist man ja immer auf dem aktiven Tabellenblatt, deshalb muss man den Recordercode nach dem aufzeichnen überarbeiten und diese Angaben ergänzen, wenn der Code ein nicht aktives Tabellenblatt bearbeiten soll.
beim Aufzeichnen des Sortierens ist es so, dass manchmal ein "ActiveSheet" deutlich macht, wo man jetzt das Tabellenblatt einsetzen muss, aber bei Range() und Cells() fehlt das ActiveSheet davor (weil es dann auch nicht benötigt wird). Diese Stellen darf man jedoch nicht vergessen!
beim Code fürs Sortieren wären dass die Stellen:
... Sort.SortFields.Add2 Key:=Range("B3:B12")
und
.SetRange Range("B3:D12")
wo du vor dem "Range" noch das "ThisWorkbook.Sheets("Tabelle2")" einfügen musst.
Gruß Daniel
Anzeige
AW: Kopieren und Sortieren mit VBA
09.06.2022 08:41:03
GerdL
Hallo U.
ungetestet.
Ich würde

ThisWorkbook.Worksheets("Tabelle2").
dirket vor jedes Range schreiben
und die eine Codezeile mit Select weglassen.
Gruß Gerd
AW: Kopieren und Sortieren mit VBA
09.06.2022 09:11:37
U.
Super, vielen Dank für die schnellen Antworten.
Was soll ich sagen, es funktioniert!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige