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.
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 AsInteger 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 EndSub
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.
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
Hallo Eksamilo, das mit den Grafiken hatte ich überlesen, deshalb hier die Erweiterung:
Sub ShowDia() Static DiaNumber AsInteger, 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 ForEach gr In ActiveSheet.Shapes 'alle Grafiken unsichtbar machen If InStr(1, gr.Name, "Grafik") = 1Then gr.Visible = False Next gr OnErrorResumeNext ActiveSheet.Shapes.Range(Array("Grafik " & Reihenfolge(DiaNumber))).Visible = True'passende Grafik sichtbar schalten DiaNumber = DiaNumber + 1 EndSub Sub ShowGrafik() 'alle Grafiken sichtbar machen Dim gr ForEach gr In ActiveSheet.Shapes If InStr(1, gr.Name, "Grafik") = 1Then gr.Visible = True Next gr EndSub
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.
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) ToUbound(Dias) 'für alle Dias ActiveSheet.Shapes("Diagramm " & Dias(g)).Visible = vis 'Status setzen Next g EndSub
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 :).
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
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.