Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1400to1404
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

Sortierbereich und Kriterium per VBA vorgeben

Sortierbereich und Kriterium per VBA vorgeben
06.01.2015 14:54:01
Sylvia

Hallo zusammen,
ich bräuchte einmal Eure Hilfe, da ich mich mit VBA nicht wirklich gut auskenne.
Ich habe ein Tabellenblatt, in dem ich nur einen bestimmten Bereich sortieren möchte. Deshalb wollte ich gerne über eine UserForm
a) die Zeilen abfragen, die sortiert werden sollen
und
b) die Spalte, nach dessen Kriterium sortiert werden soll, abfragen
und dann natürlich sortieren.
Es soll dabei immer aufsteigend sortiert werden.
Es wäre super, wenn Ihr mir da helfen könntet.
Vielen Dank im Voraus
Gruß
Sylvia

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Warum per VBA?
06.01.2015 15:37:11
Klaus M.vdT.
Hallo Sylvia,
wenn du auf "sortieren" clickst, kommt doch bereits ein hervorragender Dialog, in dem du Kriterium, auf/absteigend und alles andere anwählen kannst. Warum das Rad mit einer Userform neu erfinden?
Im Prinzip ist das natürlich kein Problem. Aber es wäre nett wenn du den bedarf, das Excel-eigene Fenster zu umgehen, noch erklärst und vielleicht eine Musterdatei lädst. Dann könnte man zielgerichteter helfen.
Grüße,
Klaus M.vdT.

ich bin mal nicht so ...
06.01.2015 16:06:32
Klaus M.vdT.
Hallo Sylvia,
obwohl ich es sinnlos finde:
https://www.herber.de/bbs/user/94782.xlsm
Grüße,
Klaus M.vdT.

Anzeige
AW: ich bin mal nicht so ...
07.01.2015 12:56:28
Sylvia
Hallo Klaus,
vielen Dank, dass Du Dir die Zeit genommen hast.
Leider ist in der Datei nur die Userform ohne Makro enthalten.
Ich arbeite mit einer sehr großen Tabelle, in der ich nur bestimmte Zeilen sortieren möchte.
In der Spalte EP befindet sich eine fortlaufende Nummerierung, die sich aber hin und wieder ändert (weil Zellen gelöscht, verschoben oder anders sortiert werden. Da dachte ich mir, dass es das einfachste wäre, wenn ich vor dem Speichern eine UserForm aufgehen lasse, die die Zeilen dann wieder richtig sortiert. Das ist für mich wichtig, weil eine andere Excel-Datei auf die Daten zugreift.
Ich bin natürlich auch für eine andere Lösung offen, die evtl. sogar ganz automatisch die richtigen Zeilen vor dem Speichern sortiert. Also, wenn man irgendwie alle Zeilen sortiert, die nach der letzten Zeile (die in der Spalte EP einen Wert über hundert hat) und die in der Spalte EP einen Wert unter Hundert haben, nach diesen sortiert. Puh, das klingt jetzt kompliziert. Deswegen habe ich mal eine Beispieldatei angefügt.
https://www.herber.de/bbs/user/94808.xlsx
Gruß
Sylvia

Anzeige
AW: ich bin mal nicht so ...
07.01.2015 14:25:25
Klaus M.vdT.
Hallo Sylvia,
in meiner Musterdatei war wohl der gesamte Code enthalten, du hast ihn blos nicht gefunden :-P
In deiner neuen Datei würde folgender Code funktionieren, ganz ohne umständlichen Userform-Aufruf. Kannst du über Button oder wie-auch-immer du willst aufrufen.
Sub SortiereNurUnter1000()
Const abZeile As Long = 1    'Überschriften in Spalte 1
Const inSpalte As Long = 146  'Sortierspalte EP (=Spalte 146)
Dim bisZeile As Long
Dim tSort As Range
With ActiveSheet
bisZeile = .Cells(.Rows.Count, inSpalte).End(xlUp).Row
If .AutoFilterMode Then .Cells.AutoFilter
.Range(.Cells(abZeile, inSpalte), .Cells(abZeile, inSpalte)).AutoFilter
.Range(.Cells(abZeile, inSpalte), .Cells(abZeile, inSpalte)).AutoFilter Field:=inSpalte,  _
Criteria1:="<100"
Set tSort = .Range(.Cells(abZeile + 1, inSpalte), .Cells(bisZeile, inSpalte)).SpecialCells( _
xlCellTypeVisible).EntireRow
.Cells.AutoFilter
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=.Range(.Cells(tSort.Cells(1, 1).Row, inSpalte), .Cells(bisZeile,  _
inSpalte)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SetRange tSort
With .Sort
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub
Ich gehe davon aus, dass die Nummern "über hundert" immer oben stehen. Ist der zu sortierende Bereich nicht zusammenhängend, steigt das Makro mit Fehlermeldung aus. Auf eine Fehlerbehandlung habe ich verzichtet.
Grüße,
Klaus M.vdT.

Anzeige
AW: ich bin mal nicht so ...
07.01.2015 15:14:13
Sylvia
Hallo Klaus,
jetzt gibt er mir nen Laufzeitfehler 1004 in der Codezeile

.Range(.Cells(abZeile, inSpalte), .Cells(abZeile, inSpalte)).AutoFilter Field:=inSpalte, _
Criteria1:="<100"

Gruß Sylvia

morgen AW: ich bin mal nicht so ...
07.01.2015 15:20:25
Klaus M.vdT.
Hallo Sylvia,
Code hat bei mir funktioniert. Habe heute leider keine Zeit mehr, darum stelle ich den Beitrag wieder auf offen. Morgen schaue ich wieder rein.
Grüße,
Klaus M.vdT.

AW: ich bin mal nicht so ...
10.01.2015 09:52:05
Hajo_Zi
Hallo Silvia,
vielleicht solltest Du Deine Datei mit dem aktuellen Code verlinken?

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige