Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Makros für Sortieren
#1
Guten Tag liebe Forumgemeinschaft ,

ich habe nun nächste Frage. Ich habe eine Tabelle mit mehrere Arbeitsblätter erstellt.
Erste Tabelle ist für allgemeine Infos und 12 weitere sind Monate Jan-Dez.
Die erste Tabelle vervollständige ich damit, dass ich eine leere Zeile per Button2 einfüge und neue Daten eingebe.
Danach sortiere ich sie nach zwei Kriterien per Button1.
Hier sind meine Makros

Private Sub CommandButton2_Click()

Cells(Worksheets("TAB1").Cells(Worksheets("TAB1").Rows.Count, 1).End(xlUp).Row, 1).Select                              'letzte beschriebene Zeile ermitteln'       
ActiveCell.EntireRow.Copy                                                                                                                                                      ' Aktuelle Zeile kopieren, unterhalb Zeile einfügen und Inhalte in Zellen ohne Formel löschen'
Cells(ActiveCell.Row + 1, 1).Insert Shift:=xlDown
 For Each Zelle In Range(Cells(ActiveCell.Row + 1, 1), Cells(ActiveCell.Row + 1, 255).End(xlToLeft))
 If Not Zelle.HasFormula Then
 Zelle.ClearContents 
 End If
    Next Zelle
    Cells(ActiveCell.Row + 1, 1).Select
   
End Sub





Private Sub CommandButton1_Click()

 Dim SSp1 As String                                     'Name 1.Parameter'
 Dim SSp2 As String                                     'Name 2.Parameter'

 Dim Bereich As String
 Bereich = "B6:BG10000"                         'diese Bereich soll sortiert werden'
 SSp1 = "b"                                             '1.Parameter ist Spalte B'
 SSp2 = "c"                                             '2.Parameter ist Spalte C'

 ActiveSheet.Range(Bereich).Sort _
 Key1:=Range(SSp1 & "1"), Order1:=xlAscending, _
 Key2:=Range(SSp2 & "1"), Order2:=xlAscending, _
 Header:=xlGuess, MatchCase:=False, _
 Orientation:=xlTopToBottom                             'sortieren aufsteigend zuerst nach Spalte B und danach nach Spalte C'
 
  End Sub


Es funktioniert alles, aber ich möchte diese Buttons auf weitere 12 Tabellen (Jan-Dez) anwenden.
Es ist überhaupt möglich? Und wie?
Für jede Hilfe bin ich dankbar.
Antworten Top
#2
Hi Karin,

warum schreibst du nicht alle Daten in ein Arbeitsblatt und machst daraus eine intelligente Tabelle. Dann kannst du nach Lust und Laune filtern und sortieren - auch ohne Verbiegen.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Antworten Top
#3
Hi Günter,

es geht leider nicht. Die Tabellen Jan-Dez sind Anwesenheitstabellen, die wie ein Kalender aussehen (für die Statistik).
Die erste Tabelle ist Grundtabelle und gleichzeitig Gesamtübersicht.
LG
Antworten Top
#4
Hallo Karin

unter der Voraussetzung das die Bereiche in allen Tabellen gleich sind waere eine Lösung die zwei Buttons einfach in die anderen Tabellen zu kopieren. Die 1. Makro Zeile bei Button2 müsste geandert werden. Probier es einfach mal aus:
Cells(Rows.Count, 1).End(xlUp).Row, 1).Select

mfg  Gast 123
Antworten Top
#5
Hi,

Danke für Vorschlag,   leider Cells(Rows.Count, 1).End(xlUp).Row, 1).Select      wird nicht akteptiert Dodgy
Antworten Top
#6
Hallo Karin

Sorry, kleiner Schreibfehler im Code:   Cells(Rows.Count, 1).End(xlUp).Row, 1).Select   so sollte es klappen:
Cells(Rows.Count, 1).End(xlUp).Select   oder - Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select   wenn du in die naechste leere Zeile willst.

mfg  Gast 123
Antworten Top
#7
Nachtrag:    wenn du unter den Befehlt Exit Sub setzt kannst du dir in Ruhe ansehen wo der Cursor stehen bleibt!
So teste ich auch meine Selectionen, indem ich das Programm stoppe, oder mir den Code in ein Test Makro schreibe


Code:
Sub Test()
Cells(Rows.Count, 1).End(xlUp).Select
End Sub

Sub Test2()
Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select
End Sub
.
Antworten Top
#8
Danke, es funktioniert! :19:
Aber leider muss ich je Buttons in je Tabellenblatt (26 mal) anklicken.
Wäre natürlich besser, wenn man die Buttons nur in erste Tabelle anklickt und es wird Tabelle für Tabelle kettenweise arbeiten  :17: 
LG
Antworten Top
#9
Guten Morgen

Zitat:Wäre natürlich besser, wenn man die Buttons nur in erste Tabelle anklickt und es wird Tabelle für Tabelle kettenweise arbeiten

Dann bau dir doch eine Schleife, die von einem Blatt zum nächsten hüpft und dann deine Makros anschuckt?
Das lässt sich auch aufzeichnen. Ich würde es in kleinen Schritten aufzeichnen und dann nachher zusammen bauen. 

Hallo Gast123,
Zitat:Nachtrag:    wenn du unter den Befehlt Exit Sub setzt kannst du dir in Ruhe ansehen wo der Cursor stehen bleibt!

das mit dem Testen von Makrobefehlen mit 'Exit sub' ist eine nette Idee.
Dafür reicht aber auch ein 'Stop'
Ich persönlich nehme zum Testen gerne den Direktbereich, den mit der VBA-Editor zur Verfügung stellt, zumal ich ihn, wenn er gerade nicht da ist, mit der Tastenkombination 'Strg+g' jederzeit einblenden kann.
Ein ? direkt vor einer Variablen - ohne Leerzeichen dazwischen - schreibt mir auch den Wert der Variablen zur Laufzeit in den Direktbereich nach Enter, und wenn ich zu Testzwecken einen anderen Wert in der Variablen benötige, geb ich ihn im Direktbereich ein:
Variable = "Hallo"
mit Enter abschließen. 
Da Direktbereich wertvollen Platz verschwendet, schließe ich ihn oft und hole ihn bei Bedarf mit Hotkey  - siehe oben  - wieder hervor…
Antworten Top
#10
Hallo Karin

zu deinem Problem habe ich mir auch mal Gedanken gemacht, man sieht das es im Forum oft mehrere Vorschlaege gibt wie man ein Problem lösen kann.  Anbei zwei Beispieldateien, als xlsx für interessierte Kollegen, Makros in der Tabelle.

Meine Idee ist, zuerst die ganze Mappe in eine Übersichts Tabelle aufzulisten, mit zwei Optionen:  Die Tabelle als Hyperlink angeben, damit man sie direkt anspringen kann, und wahlweise einen "Zurück" Hyperlink, bei mir in Zelle A1 des aktiven Blatts.  Man kann den "Zurück" Hyperlink in jede beliebige andere Zelle legen, indem man oben in der Const Anweisung die "ZurückAdr" = "A1" von Hand aendert. 

Im Modul 2 findest du ein fertiges Makro, das immer nur die Tabelle aktiviert die mit "Ja" vorgegeben ist!!  In diesen Tabellen kannst du dann dein existierendes Makro ablaufen lassen, indem du dein Makro dahin kopierst wo jetzt die MsgBox ist.  Dann kannst du deine Buttons in die Übersicht verlegen und das Makro von dort starten.  Wenn es zwei Makros sind must du noch ein Modul3 anlegen und das Makro aus Modul2 nach Modul3 kopieren. Dürfte für dich kein Problem sein.

Ich hoffe die Idee könnte dir weiterhelfen, würde mich freuen.

mfg Gast 123


Angehängte Dateien
.xlsm   Makro für sortieren Fm.xlsm (Größe: 23,67 KB / Downloads: 2)
.xlsx   Makro für sortieren.xlsx (Größe: 13,64 KB / Downloads: 3)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste