VBA Spaltenbereiche sortieren

Bild

Betrifft: VBA Spaltenbereiche sortieren
von: Spenski
Geschrieben am: 11.05.2015 19:44:47

Hallo.
kann mir evtl jemand bei meinem Problem helfen, das währe sehr nett.
Ich möchte das jede Spalte im Tabellenblatt "Kostenstellen" für sich Sortiert wird. Also A2:A21 ; B2:B21 ... T2:T21
-Sortierung soll Aufsteigend erfolgen
-Das Tabellenblatt "Kostenstellen" soll einen Blattschutz bekommen und nur der Bereich A2:T21 soll anwählbar sein. (Ka ob das eine rolle spielt)
-Sortiert werden soll, wenn Tabellenblatt "Meldungen" ausgewählt wird.
BSP-Datei:
https://www.herber.de/bbs/user/97582.xlsx
Danke fürs lesen
Christian

Bild

Betrifft: AW: VBA Spaltenbereiche sortieren
von: Daniel
Geschrieben am: 11.05.2015 20:20:22
Hi
Frage 1
sortieren jede Spalte einzeln aufsteigend:

dim Col as Range
for each Col In Range("A2:T21").columns
    Col.sort Key1:=Col.Cells(1, 1), order1:=xlascendig, header:=xlno
next
Frage 2
wie meinst du das mit dem Blattschutz:
Zelbereich A2:T21 soll anwählbar und vor Änderungen geschützt sein, der ausserhalb liegende Bereich darf nicht angewählt werden?
Frage 3
dann muss der code zum Sortieren ins Modul des Tabellenblatts "Meldungen" in das makro
Private Sub Worksheet_Activate()

Gruß Daniel

Bild

Betrifft: AW: VBA Spaltenbereiche sortieren
von: Spenski
Geschrieben am: 11.05.2015 20:52:31
hallo Daniel, danke für deine antwort.
also zu frage 2 : das war nur eine Anmerkung das das tabellenblatt einen blattschutz bekommt. hätte ja sein können das es das makro betrifft.
Irgendwie bekomm ichs net hin, habe immer einen Laufzeitfehler 1004
hier nochmal die originaldatei
https://www.herber.de/bbs/user/97583.xlsm
danke fürs lesen
christian

Bild

Betrifft: AW: VBA Spaltenbereiche sortieren
von: Daniel
Geschrieben am: 11.05.2015 22:01:20
Hi
Da fehlt ein n beim xlAscending
nuzte beim Eingeben des Code die Intellisense, dh drücke bei den Schlüsselwörtern nach Eingabe der ersten Buchstaben ALT+LEER, dann wird das Wort automatsich vervollständigt oder du erhälst eine Auswahlliste mit den Wörtern die an dieser Stelle möglich sind.
desweitern ist es nicht sinnvoll, das Blatt auf dem du Sortieren willst, zu selektieren.
du musst auch nicht selektieren, es reicht wenn du
For each Col in Sheets("Kostenstellen").Range("A2:T21").Column
schreibst, dann kannst du das Blatt "Meldung" aktiv lassen.
kleiner Tip noch: verwende Option Explicit.
Gruß Daniel

Bild

Betrifft: AW: VBA Spaltenbereiche sortieren
von: Spenski
Geschrieben am: 11.05.2015 23:07:00
Hallo Daniel
hab jetzt folgenden code in tabelle1(Meldung):
Option Explicit

Private Sub Worksheet_Activate()
Dim Col As Range
 For Each Col In Sheets("Kostenstellen").Range("A2:T21").Column
    Col.Sort Key1:=Col.Cells(1, 1), order1:=xlAscending, Header:=xlNo
Next
End Sub

Bekomme aber jetzt Laufzeitfehler 424 wenn ich in das Tabellenblatt Meldung wechsel
gruss
christian

Bild

Betrifft: AW: VBA Spaltenbereiche sortieren
von: Daniel
Geschrieben am: 12.05.2015 11:09:20
Hi
muss heissen
For Each Col In Sheets("Kostenstellen").Range("A2:T21").Columns
Columns sind alle Spalten des Bereichs, Column ist nur die Spaltennummer.
Gruß Daniel

Bild

Betrifft: AW: VBA Spaltenbereiche sortieren
von: Spenski
Geschrieben am: 12.05.2015 17:22:12
super danke jetzt funktioniert es :D
gruss
christian

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA Spaltenbereiche sortieren"