Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1132to1136
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
automatisches sortieren mit Makro
stutze
Hallo,
ich weiß, dass diese Thema schon dutzende Male hier behandelt wurde. Habe mich auch schon versucht rein zu lesen, aber jeder hat irgendwie andere Sortierungen.
Habe folgendes Makro (über Aufzeichnung in meinem VBAProjekt im Modul1):
Sub MakroTag1()
'
' MakroTag1 Makro
' automatisches sortieren, wenn g3"?"
Private Sub WorkSheet_Change()
If ("G3")  "?" Then
Range("B5:D30").Select
ActiveWorkbook.Worksheets("Tag 1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Tag 1").Sort.SortFields.Add Key:=Range("D6:D30"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Tag 1").Sort.SortFields.Add Key:=Range("C6:C30"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Tag 1").Sort
.SetRange Range("B5:D30")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A1").Select
End If
End Sub
Die Zeilen Private Sub... und If ("G3")... habe ich selber reingeschrieben. Wenn ich Schritt für Schritt durchgehe, dann funktioniert es auch, jedoch nicht, wenn ich in die Tabelle wechsel. Muss das Makro in "DieseArbeitsmappe" oder in den Sheet, wo das Makro ausgeführt werden soll? Das Makro soll "automatisch" einen Bereich sortieren, wenn in der Zelle G3 was anderes als das Fragezeichen steht. Am besten, sofort, wenn das Fragezeichen "ersetzt" wird. Ersetzung erfolgt duch eine Eingabe in einem anderen Tabellenblatt.
Für Hilfe bedanke ich mich im Voraus.
stutze
AW: automatisches sortieren mit Makro
04.02.2010 23:01:22
Josef
Hallo ?

das gehört in das Modul der Tabelle in der du G3 änderst!

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$G$3" Then
    If Target <> "?" Then
      With Worksheets("Tag 1")
        .Range("B5:D30").Sort.SortFields.Clear
        .Range("B5:D30").Sort.SortFields.Add Key:=.Range("D6:D30"), _
          SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        .Range("B5:D30").Sort.SortFields.Add Key:=.Range("C6:C30"), _
          SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange .Range("B5:D30")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
      End With
    End If
  End If
End Sub

Gruß Sepp

Anzeige
AW: automatisches sortieren mit Makro
04.02.2010 23:22:28
stutze
Hi Sepp. Danke für den Code. Ist trotzdem etwas zu hoch für mich.
Die Sortierung soll in Tabelle 8 geschehen.
Den Wert, der dann in der Zelle G3 steht und damit das Fragezeichen ersetzt, mache ich in Tabelle 2.
Habe jetzt deinen Code im 'Modul1', in 'Tabelle8' und in 'Tabelle2' versucht - aber nichts klappt.
stutze
AW: automatisches sortieren mit Makro
04.02.2010 23:29:04
Josef
Hallo ?

der Code ghört in das Modul der Tabelle2, ändere $G$3in die Zelladresse in der du änderung vornimmst,
und ändere "Tag 1" in "Tabelle 8" wenn dort die Sortierung stattfinden soll.

Gruß Sepp

Anzeige
AW: automatisches sortieren mit Makro
04.02.2010 23:50:08
stutze
Kann es sein, dass ich zu blöd dafür bin, um dich zu verstehen?
Was ist das Modul der Tabelle2?
Nochmal und detaillierter.
Ich gebe in Tabelle2, in der Zelle I12 einen Wert ein (zum Beispiel die Zahl 1), der dann auf Tabelle8, in der Zelle G3, das Fragezeichen "ersetzt.
stutze
AW: automatisches sortieren mit Makro
05.02.2010 00:04:15
Josef
Hallo ?

mach einen Rechtsklick auf das Blattregister von Tabelle2 und wähle im Kontextmenü "Code anzeigen", in das rechte Fenster kopiertst du dan folgenden Code.

' **********************************************************************
' Modul: Tabelle2 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$I$12" Then
    With Worksheets("Tabelle8")
      If .Range("G3") <> "?" Then
        .Range("B5:D30").Sort.SortFields.Clear
        .Range("B5:D30").Sort.SortFields.Add Key:=.Range("D6:D30"), _
          SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
        .Range("B5:D30").Sort.SortFields.Add Key:=.Range("C6:C30"), _
          SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange .Range("B5:D30")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
      End If
    End With
  End If
End Sub

Gruß Sepp

Anzeige
AW: automatisches sortieren mit Makro
05.02.2010 09:05:24
stutze
Absolut nichts zu machen. Keine Sortierung, wenn ich in die Tabelle wechsel.
Wechsel mit einem einfachen Code in die Tabelle:
Private Sub ComboBox1_Change()
Select Case ComboBox1
Case "Punktestand Mitspieler"
ComboBox1 = ""
Range("A1").Activate
Sheets("Punktestand").Select
ActiveSheet.ComboBox2 = ""
ActiveSheet.Range("A1").Activate
Case "Spielregeln"
ComboBox1 = ""
Range("A1").Activate
Sheets("Spielregeln").Select
ActiveSheet.ComboBox1 = ""
ActiveSheet.Range("A1").Activate
Case "Tabelle Gruppenspiele"
ComboBox1 = ""
Range("A1").Activate
Sheets("Tabelle").Select
ActiveSheet.ComboBox1 = ""
ActiveSheet.Range("A1").Activate
Case "Finalspiele"
ComboBox1 = ""
ComboBox2 = ""
Range("A1").Activate
Sheets("Finalspiele").Select
ActiveSheet.ComboBox1 = ""
ActiveSheet.Range("A1").Activate
End Select
End Sub

Un wenn ich deinen Code darunter schreibe, dann gibt es einen Kompilierungsfehler im Modul der Tabelle2. Also hatte deinen Code nach oben geschoben. Fehler kommt nicht mehr, aber die Sortierung funktioniert trotzdem nicht.
stutze
Anzeige
AW: automatisches sortieren mit Makro
05.02.2010 09:25:10
Josef
Hallo ?,

kannst du die Datei hochladen?

Gruß Sepp

AW: automatisches sortieren mit Makro
05.02.2010 09:34:56
stutze
Geht leider nicht, da die Datei ca. 600kB groß ist. Geht per Mail?
hi stutze, ich stutze...
05.02.2010 09:36:20
Renee
bei diesem Satz:
Absolut nichts zu machen. Keine Sortierung, wenn ich in die Tabelle wechsel. 

Das Ereignis wird nicht ausgelöst, wenn du in die Tabelle wechselst, sondern nur dann, wenn du in der Tabelle in der dieser Code steht in der Zelle I12 eine Änderung vornimmst!
GreetZ Renée
Anzeige
AW: hi stutze, ich stutze...
05.02.2010 09:42:24
stutze
Hi Renee. Schönes Wortspiel in deinem Betreff :-)
Wenn das so wäre, wie du schreibst, und ich in die Tabelle wechsel, dann müsste doch die Sortierung noch bestehen oder wird die Sortierung wieder rückgängig gemacht?
stutze
Nochmal von vorn und gaanz langsam...
05.02.2010 09:58:18
vorn
Stutze,
Diese Codes, die ich bis jetzt in diesem Thread sehe, machen sicher keine Sortierung rückgängig.
Ein Sortierung rückgängig zu machen ist ungefähr das Gleiche wie zu behaupten die Zahl 5 sei mit Sicherheit aus 2 und 3 enstanden ;-)
Also:
1. Bring Ordnung in die Aussagen, wie deine Tabellenblätter heissen. Also sag uns die Bezeichnung, wie sie in den Tabellenreitern stehen.
2. In welchem Blatt (Name!) ist I12, das die Sortierung auslösen soll.
3. In welchem Blatt (Name!) und welcher Zelle (Referenz) wird 'EingabeBlattName?'!I12 per Formel referenziert ?
4. Wie wird I12 verändert ? Von Hand ? Per Code (wenn ja: wie sieht der ganze Code aus?)
5. Welcher Datenbereich in welchem Blatt (Name!) soll sortiert werden ?
6. Soll bei Änderung von 'EingabeBlattName?'!I12 sortiert werden, oder erst wenn du in das 'SortierteBlattName?' wechselst ?
GreetZ Renée
Anzeige
AW: Nochmal von vorn und gaanz langsam...
05.02.2010 10:10:29
vorn
Okay, dann Punkt für Punkt. Ich weiß, dass über Ferndiagnose mit einem Unwissenden es sehr schwer sein kann.
2. I12 steht in "Tipabgabe"
3. ? - denke mir aber das bezieht sich auf Punkt 2
4. wird per Hand geändert
5. der Datenbereich B6:D30 in "Tag 1" ((erst nach Spalte D (Überschrift: "Punkte") absteigend, dann nach Spalte C (ohne Übeschrift) aufsteigend)
6. bei Änderung
Matchentscheidende Frage...
05.02.2010 10:42:43
Renee
Hi,
Ich bin immer noch stutzig ;-), denn ich seh in deinem ComboBox-Code kein Blatt mit Namen "Tag 1" ?
...und die wichtigste Frage: Welches Blatt (Name!) war aktiviert, als du den Code aufgezeichnet hast ?
GreetZ Renée
Anzeige
AW: Matchentscheidende Frage...
05.02.2010 10:56:17
stutze
Ahhhh. sorry. Bitte den ComboBox-Code vergessen. Der hat nichts direkt mit "Tag 1" zu tun. Komme nur über "Umwege" auf "Tag 1".
Und aktiviert war "Tag 1", weil ich darüber auch den Code aufgezeichnet habe (Entwicklertools - Makro aufzeichnen).
stutze
AW: Matchentscheidende Frage...
05.02.2010 11:05:27
Renee
Hi stutze,
Dann gehört der erste Code von Sepp, mit einer kleinen Änderung (s.unten) in das Tabelleblatt "Tipabgabe" (Rechtsklick auf Tabellenreiter - Code anzeigen - Code einfügen/ersetzen). Ev. Code in "Tag 1" muss gelöscht werden!
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$I$3" Then
If Target  "?" Then
With Worksheets("Tag 1")
.Range("B5:D30").Sort.SortFields.Clear
.Range("B5:D30").Sort.SortFields.Add Key:=.Range("D6:D30"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
.Range("B5:D30").Sort.SortFields.Add Key:=.Range("C6:C30"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange .Range("B5:D30")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
End If
End Sub

*) Die Abhängigkeit 'Tag 1'!G3 von Tipabgabe!I3 habe ich noch nicht begriffen, aber einfach mal angenommen das dort =Tipabgabe!I3 steht.
GreetZ Renée
Anzeige
AW: Matchentscheidende Frage...
05.02.2010 11:40:31
stutze
Mit $I$3 meinst du doch sicherlich $G$3, oder? Trotz der Änderung sortiert sich nichts.
Zu deiner Anmerkung. In G3 auf Tag 1 steht folgende Formel:
=WENN(Tipabgabe!I12="";"?";Tipabgabe!I12)
Würde es dir was ausmachen dir die Datei per Mail zu senden? Ich denke mal, dass du dann genau siehst, was ich meine und möchte.
stutze
AW: Matchentscheidende Frage...
05.02.2010 12:18:42
Renee
Hi,
NEIN im Code MUSS es "$I$3" heissen!
Und diese Zeile:
If Target  "?" Then

durch diese ersetzen!
If Target  "" Then
GreetZ Renée
AW: Matchentscheidende Frage...
05.02.2010 12:30:21
stutze
Nix zu machen. Code mit deinen Änderungen:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$I$3" Then
If Target  "" Then
With Worksheets("Tag 1")
.Range("B5:D30").Sort.SortFields.Clear
.Range("B5:D30").Sort.SortFields.Add Key:=.Range("D6:D30"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
.Range("B5:D30").Sort.SortFields.Add Key:=.Range("C6:C30"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.SetRange .Range("B5:D30")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End If
End If
End Sub
Mail an dich nicht doch von nutzen?
stutze
Anzeige
Sorry keine Mail, aber Mustermappe
05.02.2010 13:00:34
Renee
Hi,
Kopier deine Mappe in eine neue.
Aus der Kopie alles rauswerfen, was nicht relevan für den Code ist.
Also nur 2 Blätter (Tipeingabe, Tag 1), keine UF!!!
Diese Beispielmappe hochladen.
GreetZ Renée
@Renée OT mit dem macht's Spaß, gell! ;-))
05.02.2010 13:02:39
Josef
Gruß Sepp

buaaahh, und wie ;-(( (OT)
05.02.2010 13:12:25
Renee

kann die Mustermappe nicht öffnen...
05.02.2010 13:42:50
Renee
bitte als Excel 97-2003 Arbeitsmappe abspeichern und hochladen.
GreetZ Renée
AW: kann die Mustermappe nicht öffnen...
05.02.2010 14:42:31
stutze
Hoffe es klappt jetzt. Und bitte nicht an mich verzweifeln. Weiß, es ist schwierig mit mir.
Jetzt steht zwar kaum noch was drin, weil ich diese extrem "verkleinern musste, aber ich hoffe du kannst was damit anfangen.
https://www.herber.de/bbs/user/67787.xls
stutze
AW: kann die Mustermappe nicht öffnen...
05.02.2010 17:47:35
Renee
Hi stutze,
Tut mir leid, mit der Mappe kann ich nix anfangen.
Ich bin zwar aus dem besagten Kontinent, aber mit Fussball hab ich nun gar nix am Hütchen.
Vielleicht nimmst du bessere diese Vorlage und passt sie ggf. noch deinen Bedürfnissen an.
GreetZ Renée
AW: kann die Mustermappe nicht öffnen...
05.02.2010 19:51:27
stutze
Was soll dass denn jetzt? Es geht hier nicht um Fußball und dass man sich damit nicht auskennt, ich im übrigen auch nicht, es geht um ein VBA-Code der einen Datenbereich automatisch sortieren soll, wenn eine bestimmte Eingabe gemacht wird.
Werd ich dann wohl doch wieder von Hand sortieren müssen..
Schönen Dank und tolles WE

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige