ich möchte in einer Tabelle per Makro Zeilen ein- und ausblenden. Dies soll so geschehen, daß der Anwender auf einen Button/eine Schaltfläche im Excel-Dokument (nicht auf ein Icon in der Menüleiste) klickt. Sind die Zeilen eingeblendet, steht auf dem Button „Zeilen ausblenden“. Klickt man auf den Button und löst das Makro aus (sodaß also anschließend die Zeilen ausgeblendet sind), steht auf dem gleichen Button „Zeilen einblenden“ (um die Zeilen halt nach Bedarf „per Knopfdruck“) wieder einblenden zu können).
Ich habe das schon in einem anderen Excel-Dokument gesehen, funktioniert also, da ich aber kein VBA kann, verstehe ich nicht, wie ich das hinbekomme. Makros aufzeichnen kann ich, weiß nur nicht, wie ich das mit dem Button hinbekomme.
Habe schon im Archiv nachgelesen aber da steht nur was zu Makros per Schaltfläche in der Menüleiste.
nicht, wie ich das hinbekomme. Makros aufzeichnen kann ich,
weiß nur nicht, wie ich das mit dem Button hinbekomme.
das ist eigentlich ganz einfach:
hast du die Menüleiste VBA aktiviert? Falls nicht:
Menü Ansicht -> Menüleiste -> VBA
dort siehst du Hammer und Zirkel nee, Schraubenschlüssel -> draufklicken.
Es öffnet sich die Toolbox. Hier auf das Geodreick mit dem Bleistift klicken.
Jetzt bist du im DesignModus:
Die Schaltfläche auswählen und auf deinem Tabellenblatt erstellen. In den Eigenschaften bestimmte Werte festlegen.
Dann ein Doppelklick auf die Schaltfläche und du kommst zum Code.
Code eingeben:
Dim blend As Boolean
Const zellein As String = „Zellen einblenden“
Const zellaus As String = „Zellen ausblenden“
With CommandButton1
If .Caption = zellein Then
.Caption = zellaus
blend = False
Else
.Caption = zellein
blend = True
End If
End With
Dim n As Integer
For n = 1 To 10
Rows(n).Hidden = blend
Next
abspeichern, zurück zu Excel, den DesignMode verlassen und dann sollte es eigentlich schon funktionieren.
geht das nicht auch einfacher?
also Extras -> Makro -> Aufzeichnen -> (Zellen ausblenden und Stop drücken) dann Ansicht -> Symbolleisten -> Formular -> den vierten Button anklicken (Schaltfläche) und Schaltfläche ziehen. Dem dann mit rechtsklick das Makro zuweisen…
Ist doch denk ich einfacher als in den VBA Modus zu gehen, oder?
wenn ich es so mache, wie Du sagst, steckt hinter der Schaltfläche nur ein Makro. Es sollen aber zwei Makros sein und einmal steht auf der Schaltfläche „Zeilen einblenden“ und einmal „Zeilen ausblenden“. Wie gesagt, ich habe schon gesehen, daß das funktioniert.
Bei Deinem Lösungsvorschlag brauche ich zwei Schaltflächen.
Danke für Deinen Tipp,
Raúl
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
werde das mal probieren, wenn ich wieder zu Hause am Rechner bin. Ich hatte gehofft, daß man das mit einem Formular-Assistenten oder dergleichen hinbekommt und die aufgezeichneten Makros dann einfach bloß zuweisen braucht also keine VBA-Kenntnisse dafür braucht.
Der Vorschlag von MunichFreak, dem Du zugestimmt hast, dürfte Deiner Lösung doch aber nicht entsprechen, oder? Wenn ich den Code unten richtig verstehe, legst Du auf die Schaltfläche zwei Makros (so wie von mir beabsichtigt), MunichFreak bekommt mit seinem Vorschlag m.E. nur ein Makro auf die Schaltfläche und mit dieser Methode doch auch nicht zwei verschiedene Schaltflächentexte („Zeilen ausblenden“ und „Zeilen einblenden“). Oder habe ich was übersehen?
Vielen Dank für Deine Hilfe,
Raúl
Code eingeben:
Dim blend As Boolean
Const zellein As String = „Zellen einblenden“
Const zellaus As String = „Zellen ausblenden“
With CommandButton1
If .Caption = zellein Then
.Caption = zellaus
blend = False
Else
.Caption = zellein
blend = True
End If
End With
Dim n As Integer
For n = 1 To 10
Rows(n).Hidden = blend
Next
abspeichern, zurück zu Excel, den DesignMode verlassen und
dann sollte es eigentlich schon funktionieren.
zwei Makros (so wie von mir beabsichtigt), MunichFreak bekommt
mit seinem Vorschlag m.E. nur ein Makro auf die Schaltfläche
und mit dieser Methode doch auch nicht zwei verschiedene
Schaltflächentexte („Zeilen ausblenden“ und „Zeilen
einblenden“). Oder habe ich was übersehen?
Das siehst du richtig. Wenn du in den Code gehst, kannst du das ganze dynamischer machen (Schaltflächentext, Anzahl der Zeilen berechnen, etc). Hier hast du dann mehr Möglichkeiten, als durch die reine Aufzeichnung und Zuweisung wie von MunichFreak vorgeschlagen.
sorry, daß ich mich erst jetzt melde, um Danke zu sagen. Bin erst heute wieder an meinen Rechner und habe alles probiert. Funktioniert prächtig und ich habe wieder ein bißchen dazugelernt.
Ich würde gerne den Button „dimmen“, wenn er auf „Zeilen ausblenden“ steht. Scheinbar gibt es auch einen Befehl unter VBA, der „dim“ heißt. Nur, was gehört dahinter und an welcher Stelle im Code baue ich ihn ein? Hoffe, die Nachfrage ist o.k.