VBA Code für sortieren erstellen

josef24

Erfahrenes Mitglied
Hallo zusammen. Ich bitte nochmal um Unterstützung, hier zum Thema Spalte sortieren. Sortiert werden soll Spalte A, E und D aufsteigend. Die restlichen spalten sollten der jeweiligen Zeile zugehörig bleiben. Habe dieses im Netz gefunden, habe aber so meine Schwierigkeiten das ans laufen zu bringen.
Kann mir jemand bei dem angezeigten Fehler weiter helfen. Komm hier nicht weiter. Gruß Josef


Visual Basic:
Private Sub CommandButton5_Click() ' Tabelle Arb sortieren
Dim LastRow As Long ' Tabelle ArbDat sortieren
  
With Worksheets("ArbTab")

LastRow = .Range("A65536").End(xlUp).Row
    .Range("A2:AG400" & LastRow).Sort Key1:=.Range("D2")
        .Sort Key2:=.Range("E2")
    .Sort Key3:=.Range("A2")
  
    End With
  
End Sub

Im nächsten tritt folgender Fehler auf: Fehler beim kompilieren, "Konstanter Ausdruck erforderlich"
"colAtPosNr" wird markiert.

Visual Basic:
Private Sub lstData_Click() ' Eingabe der Daten in USERFORM
Dim rngRow As Range
Dim id As String
 clearForm
    If lstData.ListIndex >= 0 Then
        'die Range wird hier gesetzt mit LIstindex
    Set rngRow = wsat.Rows(lstData.ListIndex + 2)
   txtPosNr = id
txtPosNr = rngRow.Cells(, colAtPosNr).Value
 
Zuletzt bearbeitet von einem Moderator:

Yaslaw

alter Rempler
Moderator
Wo hast du denn colAtPosNr definiert? Ah, nirgends. Das sagt mindestens die Fehlermeldung.

Und ist der erste Code das aus dem Internet oder dein Versuch, die uns unbekannte Quelle umzusetzen?

Ps:
Du weisst es eigenltich, ich schreibe es fast jedes mal. MEIN GOTT! Formatiere dein Code anständig. Die Tabulatoren sind ja ausgewürfelt. Ich erkenne nur mit Mühe wo welche Sektion beginnt und endet. Es macht keinen Spass einen solchen Code zu lesen - darum macht es auch keinen Spass zu helfen.
 

josef24

Erfahrenes Mitglied
Hallo und Danke fürs Interesse. Zur Frage:
Es wahr mein versuch nach Hinweisen aus dem Internet. (Jede Spalte separat anzusprechen).
Meine bisherige Sortiermethode hat nur die Spalte "D" wirklich sortiert, und die restlichen spalten ignoriert. Nun wird es aber notwendig mehrere Spalten in die Sortierung einzubinden, daher meine Versuche.
Gruß Josef

Code:
Private Sub CommandButton5_Click() ' Tabelle ArbTab sortieren

Dim LastRow As Long      ' Tabelle ArbTab sortieren

With Worksheets("ArbTab")


LastRow = .Range("A65536").End(xlUp).Row
.Range("A2:AE20" & LastRow).Sort Key1:=.Range("D2"), Key2:=.Range("A2"), Key3:=.Range("E2")

End With

End Sub
 

Yaslaw

alter Rempler
Moderator
Habe dein Code jetzt nicht angeschaut:

  1. VB-Code in VB-Code Tags setzen[code=vb]mein Code[/code]. Habs dir bereits als Änderungsgrund deines ersten Posts geschrieben.
  2. Code formatieren.
  3. Uns den Link der Vorlage geben um zu sehen was du anderst umgesetzt hast.
 

Zvoni

Erfahrenes Mitglied
Hallo und Danke fürs Interesse. Zur Frage:
Es wahr mein versuch nach Hinweisen aus dem Internet. (Jede Spalte separat anzusprechen).
Meine bisherige Sortiermethode hat nur die Spalte "D" wirklich sortiert, und die restlichen spalten ignoriert. Nun wird es aber notwendig mehrere Spalten in die Sortierung einzubinden, daher meine Versuche.
Gruß Josef

Code:
Private Sub CommandButton5_Click() ' Tabelle ArbTab sortieren

Dim LastRow As Long      ' Tabelle ArbTab sortieren

With Worksheets("ArbTab")


LastRow = .Range("A65536").End(xlUp).Row
.Range("A2:AE20" & LastRow).Sort Key1:=.Range("D2"), Key2:=.Range("A2"), Key3:=.Range("E2")

End With

End Sub
Mach dir ein testblatt, in welchem du nach mehreren Spalten sortieren willst (noch nicht sortieren!)

Geh auf den Makro-Rekorder - "Makro aufzeichnen"
Sortiere nach mehreren Spalten im Blatt wie du es händisch gewohnt bist
"Makro aufzeichnen Beenden"
ALT+F11 (ab in VB-Editor)
Code anschauen (in der Regel in einem normalen Modul namens "Makro1" oder sowas)
 

josef24

Erfahrenes Mitglied
Hallo zusammen. Hoffe die erste Feiertagsserie ist bei allen gut überstanden worden. Bin dann zwischenzeitlich auf einen Codeschnipsel aufmerksam geworden der mich auch weiter gebracht hat.
Gruß Josef

Der Codeteil:
Code:
   Application.EnableEvents = False
  
    For i = 2 To LastRow
        .Range("A" & i) = i - 1
    Next
  
    Application.EnableEvents = True
  
Call UserForm_Initialize
    End With