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.

Commandbuttonprogrammierung
#1
Hallo liebe Community,

ich habe folgende Problem:

Ich würde gerne mit dem Commandbutton5 mehrere Diagramme, sowie Grafiken hintereinander nazeigen lassen.
Das Makro sollte also Grafik 5 und Diagramm 5 öffnen, dann wieder schließen. Danach Grafik 6 und Duagramm 6 usw.
Gibt es da eine Möglichkeit?

Anbei die Datei.
Alle Daten sind nur zu Anschauungszwecken.

Ich würde mich sehr über eine Rückmeldung freuen.

Grüße Eksa


Angehängte Dateien
.xlsm   Überlegungen.xlsm (Größe: 196,3 KB / Downloads: 4)
Antworten Top
#2
Hallo Eksamilo,
wenn Du das folgende Sub einer Schaltfläche zuweist und das Array Reihenfolge richtig belegst (Option Base 1 nicht vergessen!), sollte es gehen:

Option Base 1

Sub ShowDia()
Static DiaNumber As Integer
Dim Reihenfolge
  Reihenfolge = Array(4, 5, 13)
  DiaNumber = WorksheetFunction.Max(1, DiaNumber)
  If DiaNumber > Ubound(Reihenfolge) Then DiaNumber = 1 'wieder zum Anfang
  ActiveSheet.Shapes("Diagramm " & Reihenfolge(DiaNumber)).ZOrder msoBringToFront
  DiaNumber = DiaNumber + 1
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 14 - mit VBAHTML 12.6.0


Gruß der AlteDresdner
Gruß der AlteDresdner (Win11, Off2021)
Antworten Top
#3
Hallo Alter Dresdner,

ich bin im Bereich VBA leider noch ziemlicher Anfänger.
Die einzelnen Funktionen verstehe ich soweit, allerdings ist mir nicht ganz klar wie ich den Block einfügen soll.
Die Zuweisung bei mir läuft über die Private Sub Funktion.
Wenn ich alles da rein kopiere öffne ich mehrere Subs, was meines wissens garnicht geht.
So wird auch ein Fehler angezeigt.
Wenn ich die Zuweisung zum CommandButton löse, springt die Option Base 1 Funktion in eine Andere Spalte und lässt sich nicht implementieren.

Ich habe wieder alles angehängt.
Wäre super, wenn du mir etwas genauer sagst wie ich es einbauen muss.

Grüße Eksa


Angehängte Dateien
.xlsm   Überlegungen.xlsm (Größe: 203,82 KB / Downloads: 0)
Antworten Top
#4
Hallo Eksamilo,
im Anhang siehst Du, wie es sein sollte. Das Option Base 1 (lässt alle Felder automatisch mit Index 1 beginnen) habe ich wieder rausgenommen, um in anderen Sachen kein Unheil zu stiften.
Ich würde 'Möglichkeit 2' anwenden (Formularsteuerelement statt ActiveX-Button), damit kannst Du nach Zuweisung des Makros zur Schaltfläche vor das Sub ein Private voranstellen, damit erscheint das Makro in Excel nicht in der Makroliste.
Gruß der AlteDresdner
Gruß der AlteDresdner (Win11, Off2021)
Antworten Top
#5
Hallo Eksamilo,
das mit den Grafiken hatte ich überlesen, deshalb hier die Erweiterung:
Sub ShowDia()
Static DiaNumber As Integer, gr
Dim Reihenfolge
  Reihenfolge = Array(4, 5, 13)
  DiaNumber = WorksheetFunction.Max(Lbound(Reihenfolge), DiaNumber)
  If DiaNumber > Ubound(Reihenfolge) Then DiaNumber = Lbound(Reihenfolge) 'wieder zum Anfang
  ActiveSheet.Shapes("Diagramm " & Reihenfolge(DiaNumber)).ZOrder msoBringToFront
  For Each gr In ActiveSheet.Shapes 'alle Grafiken unsichtbar machen
    If InStr(1, gr.Name, "Grafik") = 1 Then gr.Visible = False
  Next gr
  On Error Resume Next
  ActiveSheet.Shapes.Range(Array("Grafik " & Reihenfolge(DiaNumber))).Visible = True 'passende Grafik sichtbar schalten
  DiaNumber = DiaNumber + 1
End Sub
Sub ShowGrafik() 'alle Grafiken sichtbar machen
Dim gr
  For Each gr In ActiveSheet.Shapes
    If InStr(1, gr.Name, "Grafik") = 1 Then gr.Visible = True
  Next gr
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 14 - mit VBAHTML 12.6.0


Das Sub ShowGrafik macht alle Grafiken wieder sichtbar und muss nur von irgendwem irgendwie aufgerufen werden.
Gruß der AlteDresdner
Gruß der AlteDresdner (Win11, Off2021)
Antworten Top
#6
Hallo noch einmal,

hat bisher alles super geklappt.
Danke dir rechtherzlich.
Ich schaue mich mittlerweile schon nach VBA Fortbildungen um :D.

Ich habe dennoch eine letzte kleine Frage.
Wie du vielleicht in der Datei siehst habe ich die GRafiken von den Diagrammen entkoppelt und eine eigene Tabelle als Ansichtblatt erstellt.
Jetzt würde ich allerdings noch gerne die Grafiken gemeinsam auf der ersten Seite einblenden und ausblenden.
Ich habe schon einige Versuche mit der "If" und "and" versucht, was allerdings nicht wirklich geklappt hat.

Kannst du, oder vielleicht jemand anderes noch ein letzes Mal aushelfen?

Die Grafiken 1-4 befinden sich auf der ersten Seite.
Sie sollen alle gleichzeitig über die Schaltfläche "Sammlung Offene Fragen" ein- sowie ausblendbar sein.

Liebe Grüße und ein herzlichen Dankeschön

Eksa


Angehängte Dateien
.xlsm   Überlegungen.xlsm (Größe: 196,24 KB / Downloads: 9)
Antworten Top
#7
Hallo Eksamilo,
falls ich Dich richtig verstanden habe, sollte es so gehen:
Sub OKallg()
Dim Dias, g, vis
  Dias = Array(1, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 20) 'alle Dias
  'aktuellen Status am 1. Element feststellen und umdrehen
  vis = Not ActiveSheet.Shapes("Diagramm " & Dias(Lbound(Dias))).Visible
  For g = Lbound(Dias) To Ubound(Dias) 'für alle Dias
    ActiveSheet.Shapes("Diagramm " & Dias(g)).Visible = vis 'Status setzen
  Next g
End Sub


VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 14 - mit VBAHTML 12.6.0

Gruß der AlteDresdner
Gruß der AlteDresdner (Win11, Off2021)
Antworten Top
#8
Klasse wieder was gelernt, allerdings zeigt es mir jetzt nur alle Diagramme an.
Ich hätte jedoch gerne die 4 Grafiken die sich auf der Diagrammseite befinden in diesem Stil.

Per Knopfdruck auf "Sammlung Offene Fragen" sollen die vier Grafiken gemeinsam ein- und ausgeblendet werden können.

Im Prinzip so wie bei den vorherigen nur eben mit Grafiken, nicht mit Diagrammen und gleichzeitig, statt nacheinander.

Herzlichen Dank für die Mühen, mein Arbeitgeber dankt es ebenso :).

Grüße Eksa
Antworten Top
#9
Hallo Eksamilo,
da müsstest Du mir schon sagen, was genau sein soll, ich verstehe es nicht.
Du hast n Grafiken übereinander, da bringt das gemeinsame Ein-/Ausblenden von 4 Stück m.E. nichts.
Was genau soll in Sub OKAllg passieren? Welche Grafik(en) sollen sichtbar, welche nicht sichtbar sein?
Ist gemeint: 4 Grafiken (welche?) nacheinander anzeigen, wenn auf Sammlung... geklickt wird?
Gruß der AlteDresdner
Gruß der AlteDresdner (Win11, Off2021)
Antworten Top
#10
Hallo Dresdner,

ich möchte das Grafik 1, 2, 3 und 4 gleichzeitig angezeigt werden wenn ich auf den Button "Sammlung Offene Fragen" klicke.
Diese Grafiken sollen in den Bereich der Diagramme geschoben werden und bei einem Klick auf den Button erscheinen, bei einem weiteren Klick wieder verschwinden.

Brauchst du noch mehr Infos?

Grüße Eksa
Antworten Top


Gehe zu:


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