Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1156to1160
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

Daten sortieren mit VBA

Daten sortieren mit VBA
Thomas
Hallo weltbestes Forum
ich möchte mit VBA in einer Liste Daten sortieren.
Wenn ich für die Abläufe aufzeichne schreibt Excel folgenden Code:
Range("A2:M2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Ich möchte aber nicht auf das Datenblatt wechseln und ändere den Code wie folgt ab:
Set a = Sheets("KD")
a.Range("A2:M2").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Problem ist nur, das funktioniert nicht. Excel meldet einen Fehler.
Ich suche schon lange nach einer Lösung, habe aber bislang nichts gefunden.
Kann mir jemand einen Tipp geben. Im Voraus schon mal vielen Dank.
Gruß Thomas
PS: das Problem liegt sicher irgendwo zwischen Tastatur und Stuhl ...

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

Betreff
Benutzer
Anzeige
AW: Daten sortieren mit VBA
21.05.2010 17:34:02
Peter
Hallo Thomas,
versuch es so:
Option Explicit
Public Sub Sort()
With ThisWorkbook.Worksheets("KD")
.Range("A2:M2").Sort _
Key1:=.Range("A2"), Order1:=xlAscending, _
Header:=xlNo, orderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With
End Sub

Gruß Peter
korrekt Referenzieren
21.05.2010 17:47:36
ChristianM
Hallo Thomas,
jedes Auftreten eines Bereiches benötigt die Referenz auf das Worksheet, daher musst du auch bei "Key1:=Range("A2")" das Worksheet angeben, also z.B: "Key1:=a.Range("A2")"
Aber das alleine wird dir nicht viel weiterhelfen, da du so nur den Bereich "A2:M2" sotierst, also nur eine Zeile.
Mein Vorschlag:

Option Explicit
Sub TestIt()
Dim lngLR As Long
With Sheets("KD")
lngLR = .Cells(.Rows.Count, 1).End(xlUp).Row
.Cells(2, 1).Resize(lngLR - 1, 13).Sort _
Key1:=.Range("A2"), Order1:=xlAscending, _
Header:=xlNo, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With
End Sub
Gruß
Christian
Anzeige
AW: korrekt Referenzieren
21.05.2010 19:44:01
Thomas
Hi Christian
der Hinweis auf die Referenz war genau richtig!
Mein Code sieht jetzt so aus:
Function KDNrAktualisieren()
Set a = Sheets("KD")
ZEnde = a.Cells(1, 2).End(xlDown).Row
a.Range("A2:M" & ZEnde & "").Sort Key1:=a.Range("A2"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
ActiveWorkbook.Names.Add Name:="Kundennummer", RefersToR1C1:="=KD!R2C1:R" & ZEnde & "C1"
End Function
und funktioniert.
Vielen Dank auch an Peter!
Das ist aber keine Function...
22.05.2010 07:56:54
ChristianM
... die liefert ja nichts zurück.
also - nimm 'ne Sub. Und auf "a" kannst du auch verzichten, wenn du direkt auf das Sheet referenzierst wie in meinem Bsp.
Gruß
Christian
Anzeige

98 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige