Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1764to1768
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

Command Button Frage

Command Button Frage
22.06.2020 12:36:46
Axel
Hallo zusammen,
das Netz hab ich schon gequält, aber keine Lösung gefunden.
Ich möchte ein Makro für Tabellenblatt 2 und 3 über einen (Active-X-) Command Button auf Tabellenblatt 1 starten.
Das Makro wurde ursprünglich per Command Button auf den jeweiligen Tabellenblättern ausgeführt und funktioniert auch:
Private Sub CommandButton21_Click()
ActiveSheet.Rows(4).Resize(ActiveSheet.UsedRange.Rows.Count).Sort Key1:=Range("F4"), _
Order1:=xlAscending, _
Header:=xlGuess, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
Ich habe folgendes gemacht:
In ein Modul habe ich folgenden Code gespeichert:
Public Sub Row_F_Sort()
Worksheets("Uebersicht_Ertrag").Activate
With ActiveSheets
.Rows(4).Resize(ActiveSheet.UsedRange.Rows.Count).Sort Key1:=Range("F4"), _
Order1:=xlAscending, _
Header:=xlGuess, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With
Worksheets("Uebersicht_NGV").Activate
With ActiveSheets
.Rows(4).Resize(ActiveSheet.UsedRange.Rows.Count).Sort Key1:=Range("F4"), _
Order1:=xlAscending, _
Header:=xlGuess, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With
Worksheets("Uebersicht_Ertrag").Activate
End Sub
und im Tabellenblatt 1 habe ich einen Command Button mit folgendem Code:
Private Sub CommandButton21_Click()
Call Row_F_Sort
End Sub
Das war eine der Lösungsmöglichkeiten, die ich im Netz gefunden hatte. Eine andere war, den Code direkt mit der Schaltfläche zu verknüpfen.
So oder so erscheint eine Fehlermeldung: Laufzeitfehler 424, Objekt erforderlich.
Muss dafür eine Beispielmappe hochgeladen werden, oder erkennt man schon auf den ersten Blick, was falsch am Code ist? Ich meine, mehr würde die Mappe auch nicht enthalten.
Vielen Dank vorab und beste Grüße
Axel

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Command Button Frage
22.06.2020 12:58:15
Daniel
Hi
"ActiveSheets" gibt es nicht.
Da immer nur ein Tabellenblatt aktiv sein kann, steht das imm er im Singular.
Ansonsten:
1. Beim Sortieren ist wichtig, dass die Zellen, die den Key definieren, zum Zellbereich der sortiert wird, gehören.
Dh. sie müssen nicht nur innerhalb des Adressbereichs liegen, sondern auch auf dem selben Tabellenblatt.
2. Befindet sich der Code im Modul eines Tabellenblatts, do referenzieren alle Range, Cells, Columns und Rows ohne Tabellenblattangabe davor nicht auf das aktive Tabellenblatt, sondern auf das Tabellenblatt des Moduls in dem der Code steht.
Wie das jetzt ist, wenn der Code zum sortieren zwar in einem allgemeinen Modul steht und von einem Makro aus einem Tabellenblatt aufgerufen wird, weiß ich nicht, aber ich würde beim Key immer das selbe Tabellenblatt angeben wie für den Sortierbereich.
Gruß Daniel
Anzeige
AW: Command Button Frage
22.06.2020 13:18:57
Axel
Hi Daniel,
danke für Deine Antwort.
Ich hab bei ActiveSheet aus Plural Singular gemacht, das funktioniert.
Was jetzt passiert ist: im Tabellenblatt "Uebersicht_Ertrag" wird die 4. Zeile (enthält Überschriften) mit sortiert, im Tabellenblatt "Uebersicht_NGV" nicht, obwohl der Code für beide Tabellenblätter gleich ist.
Das verstehe ich nicht.
Wie müsste ich das jeweils aktive Tabellenblatt vor Key aussführen?
Danke vorab
Axel
AW: Command Button Frage
22.06.2020 13:44:20
Daniel
Bei Header:=xlGuess entscheidet Excel anhand bestimmter Faktoren Formatierung, Inhalt) selbst, ob die erste Zeile eine Überschrift ist oder zu den Daten gehört.
Ich würde dir empfehlen, auch mal die Hilfe zum Sortieren durchzulesen.
Gruß Daniel
Anzeige
AW: Command Button Frage
22.06.2020 13:52:02
Axel
Ich hab die Originaldatei abgespeckt und neutralisiert und da funktioniert alles wie geplant:
https://www.herber.de/bbs/user/138473.xlsm
Nur in der echten Originaldatei wird nach wie vor die Zeile 4 im Tabellenblatt "Uebersicht_Ertrag" mit sortiert.
Hab ich irgendwas übersehen?
Gruß
Axel
AW: Command Button Frage
22.06.2020 13:56:54
Daniel
Ja, meinen letzten Beitrag.
AW: Command Button Frage
22.06.2020 14:07:16
Axel
Wenn ich Header:=xlGuess auf Header:=xlNo setze, muss ich doch im Code auch ab Zeile 5 sortieren, also Key1:=Range("F5") oder?
Ich habe ja nicht umsonst angegeben, Makros (idR) nur mit Makrorecorder.
Anzeige
AW: Command Button Frage
22.06.2020 14:13:00
Daniel
Bei xlNo wird die erste Datenzeile immer mit sortiert, bei xlYes nie.
Bei xlGuess hängt es davon ab, ob sich de erste Datenzeile für Excel erkennbar von der zweiten unterscheidet oder nicht.
Andere Hintergrundfarbe und Fettschrift nur in der Überschrift sollten ausreichen, um die erste Zeile als Überschrift zu kennzeichnen.
Gruß Daniel
AW: Command Button Frage
22.06.2020 14:16:52
Daniel
Auch oder gerade bei "VBA nur mit Recorder" sollte man, wenn der Code Probleme macht, einen Blick in die Hilfe zum jeweiligen Befehl werfen. Um in die Hilfe zu kommen, muss man nur den Cursor auf den entsprechenden Befehl setzen und F1 drücken. Einfacher und Anwenderfreundlicher gehts nicht.
Gruß Daniel
Anzeige
AW: Command Button Frage
22.06.2020 14:48:56
Axel
Hab mir die Hilfe angeschaut, fand ich aber nicht hilfreich.
Anyway, ich denke, ich bau die Datei noch mal neu. In der Beispieldatei funktioniert es ja, nur in der Originaldatei nicht.
Überschriftenzeile ist fett und farbig, wird trotzdem mit sortiert... Vielleicht ist durch die ganze Testerei irgendwas kaputt gegangen. Im Zweifel melde ich mich noch mal.
AW: Command Button Frage
22.06.2020 15:28:45
Daniel
Ja in die Hilfe muss man sich etwas einlesen.
Aber irgendwann will man den Status "nur mit Recorder" ja auch mal hinter sich lassen.
Das hochladen von Beispieldateien zum finden von Fehlerursachen macht nur dann Sinn, wenn in der Beispieldateien der Fehler auch auftritt.
Gruß Daniel
Anzeige
Lösung
23.06.2020 13:07:40
Axel
Hallo zusammen,
hier ist die finale Lösung für Interessierte mit ähnlichem Anliegen.
Anliegen:
Im Tabellenblatt2 soll eine Matrix nach Spalte F aufsteigend sortiert werden.
Die zu sortierenden Daten stehen ab Zeile 5.
Das Makro soll über eine Befehlsschaltfläche von Tabellenblatt1 aufgerufen werden.
Makro der Befehlsschaltfläche:
Private Sub CommandButton21_Click()
Call Row_F_Sort
End Sub
Makro im Modul1:
Public Sub Row_F_Sort()
Application.ScreenUpdating = False
Worksheets("Tabellenblatt2").Activate
With ActiveSheet
.Rows(5).Resize(ActiveSheet.UsedRange.Rows.Count).Sort Key1:=Range("F5"), _
Order1:=xlAscending, _
Header:=xlNo, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With
Application.ScreenUpdating = True
End Sub

Viele Grüße
Axel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige