Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1396to1400
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

excel sortieren mit VBA

excel sortieren mit VBA
20.12.2014 21:32:21
Mario
Hallo zusammen,
ich komme einfach nicht weiter, deshalb meine Frage an euch Spezialisten.
Ich arbeite in einer Arbeitsmappe mit 15 Tabellenblättern.
im 1. Tabellenblatt stehen in Spalt B (ab Zeile 8) die Namen. Diese werde automatisch auf die anderen Tabellenblätter übernommen (auch in Spalte B, Zeile 8).
Nun möchte ich gerne beim Hinzufügen neuer Namen das diese auf den Tabellenblättern 1 bis 13 automatisch sortiert werden.
Ich habe hier folgendem Code der Sortiert aber nur das aktive Tabellenblatt.
ActiveSheet.Range("B8:AP200").Sort Key1:=Range("B8"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("B8").Select
Könnt ihr mir hier weiterhelfen?
Danke und Viele Grüße Mario

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: excel sortieren mit VBA
20.12.2014 22:21:50
ransi
Hallo MArio,
"Aus der Hüfte" und ungetestet:
dim i as integer
for i=1 to 13
with sheets(i)
.Range("B8:AP200").Sort Key1:=.Range("B8"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'Range("B8").Select
end with
next
ransi

AW: excel sortieren mit VBA
20.12.2014 23:23:16
Mario
Hallo Ransi,
vielen Dank für deine schnelle Antwort.
Leider habe ich einen Fehler beim ausführen, es ist dann folgendes gelb markiert.
.Range("B8:AP200").sort Key1:=.Range("B8"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
VG Mario

Anzeige
AW: excel sortieren mit VBA
21.12.2014 04:40:12
Michael
Hey,
es ist sehr früh, ich bin platt. Daher nur eine kurze "quick and dirty"-Lösung. Dazu müsstest Du die sheets aber sheet1, sheet2, sheet3, bis 14 so nennen, dann klappt es aber entspannt. Eben getestet. Allerdings wäre ich froh, wenn ein echter Excel-crack mal zeigt, wie man das elegant in 4 Zeilen macht. Genug gelabert, hier ein funktionierender Code:
Sub Help()
Dim Number As Integer
For Number = 1 To 13
Worksheets("Sheet" & Number).Activate
Range("B8:AP200").Select
ActiveWorkbook.Worksheets("Sheet" & Number).Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet" & Number).Sort.SortFields.Add Key:=Range("B8:B29") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet" & Number).Sort
.SetRange Range("B8:B29")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Next
End Sub

Anzeige
AW: excel sortieren mit VBA
21.12.2014 04:42:40
Michael
Hilfe!! Korrektur, der reader hat einen kleinen Fehler eingebaut. Hier nochmal korrekt:
Sub Help()
Dim Number As Integer
For Number = 1 To 13
Worksheets("Sheet" & Number).Activate
Range("B8:AP200").Select
ActiveWorkbook.Worksheets("Sheet" & Number).Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet" & Number).Sort.SortFields.Add Key:=Range("B8:B200") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet" & Number).Sort
.SetRange Range("B8:B200")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Next
End Sub

Anzeige
Ich kann keinen CodeUnterschied entdecken, ...
21.12.2014 15:32:41
Luc:-?
…Michael,
und was meinst du mit „Reader“?
1. Wenn man HWHs Hinweise zur Fktsweise der ForumsSoftware beim Posten von PgmCode nicht beachtet, muss man mit dem leben, was diese mit überlangen CodeZeilen macht!
2. Handelt es sich beim zu Sortierenden um Chinesisch oder weshalb gibst du PinYin als SortierMethode an? ;-]
3. Solltest auch du dir beizeiten angewöhnen, Konstanten für sich ggf ändernde Angaben zu verwenden, damit in einem solchen (Aktualisierungs-/Anpassungs-)Fall nur am PgmAnfang 1× geändert und nicht das ganze Pgm nach diesen Stellen durchsucht wdn muss. Darauf habe ich schon desöfteren hingewiesen! Also hier zB Const adRelBer$ = "B8:B29" deklarieren und in der Folge Range(adRelBer) verwenden. Noch sicherer ist es, wenn man dafür einen mappen- oder blattbezogenen Namen definiert, weil sich der ggf auch automatisch ändern kann (falls das erwünscht ist).
Gruß + schö4AdSo, Luc :-?

Anzeige
AW: Ich kann keinen CodeUnterschied entdecken, ...
22.12.2014 03:27:59
Michael
Hey,
Mit Reader hatte ich den Macro-recorder gemeint :-). Ich habe, die Prozedur, automatisch nach alphabet zu sortieren vom Macro-recorder übernommen, weil ich ansonsten nicht gewusst hätte, wie man das macht - aufgrund bescheidener VBA-Kenntnisse. Das sortierte waren gängige europäische Zahlen.
Ich will hier keine große Diskussion starten: VBA macht mir echt Spaß, ich lerne immer mal ein bisschen was dazu, ich dachte, ich hätte ihm mit diesem funktionierendem Code helfen können, weil ich kein besseres Ergebnis zuvor gesehen hatte, es war 4 Uhr Nachts und ich habe wirklich nicht die Lust und Muße gehabt, dann nochmal ein Tutorial durchzugehen, was ich alles vom Reader nochmal ausschneiden darf. Danke für die 3.

Anzeige
Bitte! 'Reader' versteht keiner als 'Recorder'! :)
22.12.2014 04:18:25
Luc:-?
Gruß, Luc :-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige