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

Sortieren

Sortieren
24.06.2023 15:41:18
Siegfried

Hallo zusammen,

ich möchte einen Bereich per VBA sortieren.

Die Macro-Aufzeichnung:

Sub Makro1()
'
' Makro1 Makro
'

'
Range("G6:X50").Select
ActiveWorkbook.Worksheets("Tabelle2").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Tabelle2").Sort.SortFields.Add2 Key:=Range( _
"M6:M50"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Tabelle2").Sort
.SetRange Range("G6:X50")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

habe ich in einen Code übertragen:

SortMatrix.Select
ActiveWorkbook.Worksheets(Blattname).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(Blattname).Sort.SortFields.Add2 _
Key:=ReiheMatrix, _
SortOn:=xlSortOnValues, _
Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(Blattname).Sort
.SetRange SortMatrix
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Bei meiner Übertragung wird nur die Spalte M sortiert.
Die Werte in den Spalten von G bis X bleiben unverändert.
Es versteht sich von selbst;
Blattname ist Tabelle2
ReiheMatrix ist "M6:M50"
SortMatrix ist "G6:X50"
Was ist bei der Übertragung falsch?

Gruß
Siegfried

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sortieren
24.06.2023 15:47:42
onur
"Es versteht sich von selbst; Blattname ist Tabelle2, ReiheMatrix ist "M6:M50", SortMatrix ist "G6:X50" ?
Und wo genau steht das im Code?
Warum postest du Codefragmente statt die ganze Sub ?


AW: Sortieren
24.06.2023 16:26:45
Siegfried
Hin onur

natürlich habe ich die Beziehungen im Code definiert, allerdings als Variablen
Blattname = ActiveSheet.Name
ebenso SortMatrix
Set SortMatrix = Range(Cells(1, 1).Offset(StartRow + 1, JederPaar), _
Cells(1, 1).Offset(StartRow + AnzKombi, JederZahl2))
Const StartRow ist 5
Const JederPaar ist die Spalte F
Const JederZahl2 ist die Spalte W
Elemente ist in dieser Anfrage 10 (kann aber auch jede andere gerade Zahl sein)
AnzKombi ist WorksheetFunction.Combin(Elemente, 2)
und ReiheMatrix
Set ReiheMatrix = Range(Cells(1, 1).Offset(StartRow + 1, JederReihe), _
Cells(1, 1).Offset(StartRow + AnzKombi, JederReihe))
JederReihe ist die Spalte M
Du kannst davon ausgehen, diese Angaben zutreffend sind.
Unerklärlich ist mir halt der Umstand, dass mit meiner Übertragung nur die Spalte M sortiert wird.
Und Sorry, ich bin (womöglich fälschlicher Weise) davon ausgegangen, dass die Excel-Profis die Ursache für den Fehler erkennen.

GrußSiegfried


Anzeige
AW: Sortieren
24.06.2023 17:05:49
onur
Wie ich bereits schon erwähnte: Poste die komplette Prozedur (noch besser die Datei) - Sie fängt mit "Private Sub" an und hört mit "End Sub" auf.
Ich habe nämlich keine Lust auf Ratespiele und Hin- und Herraterei. Wenn dein Auto defekt ist, bringst du nur den Vergaser zur Werkstatt, weil DU (als Experte) meinst, das müsse daran liegen ?


AW: Sortieren
24.06.2023 18:34:42
Siegfried
Hi Onur,

es hat zwar gedauert, aber vielleicht hat sich der Aufwand gelohnt.
Hier die Datei
https://www.herber.de/bbs/user/159719.xlsm

Gruß
Siegfried


Anzeige
AW: Sortieren
24.06.2023 20:32:38
onur
Du willst WIRKLICH
For n2 = 1 To AnzKombi
mal Sortieren ???


AW: Sortieren
24.06.2023 22:27:44
Siegfried
Hi Onur,

die Prüfung unter welchen Bedingungen eine Sortierung angesagt ist, habe ich weggelassen, weil sie für die Fragestellung nicht wichtig sind.
Tatsächlich werden natürlich nicht 1 to AnzKombi Sortierungen vorgenommnen.
Aber ob diese nach dem ersten oder xten Durchgang erfolgen muss, kann ich nicht vorhersagen.
Aber wo liegt der Fehler, dass bei dem Code, keine Sortierung vorgenommen wird?

Gruß
Siegfried


AW: Sortieren
24.06.2023 23:25:10
onur
"weil sie für die Fragestellung nicht wichtig sind" ? Nix für Ungut, aber wenn du wüsstest, WAS wichtig ist und was nicht, bräuchtest du bestimmt keine Hilfe !
Du kapierst es nicht.
Die Schleife mit n2 ist völlig überflüssig. Mit n2 passiert GAR NIX. sie verändert sich zwar, aber ihr Wert wird nirgends abgerufen.
Und wenn du schon glaubst, dass du sie unbedingt brauchst, dann gehört wenigstens "NEXT n2" direkt hinter "NEXT n3" und nicht hinter "End With".
Teste mal: Nach dem ersten Durchlauf der Schleife ist alles so, wie du es wahrscheinlich willst (Keine genaue Ahnung, was du für ein Ergebnis erwartest - du hast kein Wunschergebnis gepostet), aber die nächsten Durchläufe - du sortierst 45 (!) mal - versauen wieder alles.


Anzeige
AW: Sortieren
24.06.2023 22:55:13
Ulf
Hi Siegfried,
da steht Add2 irgendwie TippFehler ?

ActiveWorkbook.Worksheets(Blattname).Sort.SortFields.Clear
                    ActiveWorkbook.Worksheets(Blattname).Sort.SortFields.Add _
                        Key:=ActiveWorkbook.Worksheets(Blattname).Range(ReiheMatrix.AddressLocal), _
                        SortOn:=xlSortOnValues, _
                        Order:=xlAscending, _
                        DataOption:=xlSortNormal
                    With ActiveWorkbook.Worksheets(Blattname).Sort
                        .SetRange SortMatrix
                        .Header = xlNo
                        .MatchCase = False
                        .Orientation = xlTopToBottom
                        .SortMethod = xlPinYin
                        .Apply
                    End With
das tut bei mich
hth
Ulf


Anzeige
AW: Sortieren
24.06.2023 23:10:14
Siegfried
Hi Ulf

Danke für Deine Anwort.
Add2 ist kein Tipfehler, sondern so von der Macro-Aufzeichnung übernommen.

und Hi Onur
Danke für Deine Frage.
Sie hat bei mir zu dem Versuch geführt, die Schleife zu Testzwecken kleiner zu dimensionieren z.B. 1 to 10
und siehe da, die Sortierung wird vorgenommen.
Bei 1 to AnzKombi wurde der Ausgangszustand wieder hergestellt.
So sieht es eben aus, wenn nur bescheidene VBA Kenntnisse vorliegen.

Danke und Gruß
Siegfried

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige