vielen Dank für deine Lösung. ich habe leider noch nicht geändert das ich Office365 nutze. Kann es sein das dein Code deswegen nicht bei mir funktioniert?
Und: kann ich den Code auch einfach in das Modul eines speziellen Blattes kopieren und nutzen? Hintergrund der Frage: ich will diese Logik auf mehrere Blätter anwenden, dort aber auf unterschiedliche Spalten.
läuft meine Beispieldatei nicht bei Dir? Vielleicht ist es auch notwendig, diese erst einmal in einen vertrauenswürdigen Ordner zu speichern und dann zu öffnen. Da ich kein 365 habe, kann ich es selber nicht testen.
Das Makro selber ist mit geringfügiger Erweiterung auch für mehrere Tabellenblätter einsetzbar.
hat in deiner Datei nicht funktioniert aber musste den Code ja in in meine Datei kopieren und habe einen Commandbutton eingefügt und den Code zugeordnet -das passt alles.
Der Code läuft auch rund, nur wenn ich die letzte ausgeblendete Spalte einblenden lassen mag dann springt er in den Debug (übrigens auch bei deiner Datei, da habe ich nochmals das Makro ohne Klick aufs Plus Zeichen ausgelöst).
Das Minus Zeichen welches bei die im Code ist brauche ich tatsächlich auch nicht =) Was mich noch interessiert ist die Anpassung auf das Arbeitsblatt.
sorry, war mein Fehler. Ich hatte den Namen des Makros noch mal geändert, aber vergessen, dem Button das nun neue Makro zuzuweisen (per Rechtsklick auf den Button -> Makro zuweisen).
Hier jetzt richtig und ohne Zusatzfeatures:
Sub Spalten_einblenden() Dim rngBereich As Range Dim rngSpalte As Range Set rngBereich = Range("X:AC") If rngBereich.Columns(rngBereich.Columns.Count).Hidden = False Then MsgBox "Mehr Spalten gibt es nicht.", vbInformation ' rngBereich.EntireColumn.Hidden = True ' ActiveSheet.Buttons(Application.Caller).Caption = "+" Else For Each rngSpalte In rngBereich.Columns If rngSpalte.Hidden Then rngSpalte.Hidden = False Exit For End If Next rngSpalte ' If rngBereich.Columns(rngBereich.Columns.Count).Hidden = False Then ' ActiveSheet.Buttons(Application.Caller).Caption = "-" ' End If End If End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28 • Leonhard
ich habe nochmal eine Frage hierzu. Ich verwende den Code von Uwe (leicht angepasst) in den Blättern "AR" und "Nachtr"
Code:
Sub Spalten_einblendenAR() Dim rngBereich As Range Dim rngSpalte As Range Set rngBereich = Range("G:O") If rngBereich.Columns(rngBereich.Columns.Count).Hidden = False Then MsgBox "Sie haben die maximale Anzahl an einblendbaren Spalten erreicht.", vbInformation ' rngBereich.EntireColumn.Hidden = True ' ActiveSheet.Buttons(Application.Caller).Caption = "+" Else For Each rngSpalte In rngBereich.Columns If rngSpalte.Hidden Then rngSpalte.Hidden = False Exit For End If Next rngSpalte ' If rngBereich.Columns(rngBereich.Columns.Count).Hidden = False Then ' ActiveSheet.Buttons(Application.Caller).Caption = "-" ' End If End If End Sub
Das erste Blatt meiner Datei ("Aufstellung") ist die Summary der anderen Blätter. Was ich nun gerne hätte: Wenn man im Blatt AR eine Spalte hinzufügt soll im Blatt Aufstellung auch eine Spalte eingeblendet werden.
wenn Spalte G in Blatt "AR" mit Hilfe des Codes oben eingeblendet wird dann soll automatisch im Blatt "Aufstellung" die Spalte U eingeblendet werden. Das gilt Im Blatt "AR" für die Spalten G:O und dann für die Spalten U:AC im Blatt "Aufstellung".
Gleiches wäre es für das Blatt "Nachtr". Wenn ich hier die Spalten G:O einblende sollen im Blatt "Aufstellung" automatisch die Spalten I:Q eingeblendet werden.
weise beiden Buttons (AR und Nachtr) dieses Makro zu:
Sub Spalten_einblenden() Dim lngSpalte As Long Dim rngBereichAktivesBlatt As Range Dim rngBereichAufstellung As Range
Select Case ActiveSheet.Name Case "AR" Set rngBereichAktivesBlatt = Range("G:O") Set rngBereichAufstellung = Worksheets("Aufstellung").Range("U:AC") Case "Nachtr" Set rngBereichAktivesBlatt = Range("G:O") Set rngBereichAufstellung = Worksheets("Aufstellung").Range("I:Q") End Select
With rngBereichAktivesBlatt If .Columns(.Columns.Count).Hidden = False Then MsgBox "Sie haben die maximale Anzahl an einblendbaren Spalten erreicht.", vbInformation Else For lngSpalte = 1 To .Columns.Count If .Columns(lngSpalte).Hidden Then .Columns(lngSpalte).Hidden = False rngBereichAufstellung.Columns(lngSpalte).Hidden = False Exit For End If Next lngSpalte End If End With End Sub
Gruß Uwe
Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28 • Leonhard
ich hatte deinen vorherigen Code einer Schaltfläche und keinem CommandButton zugewiesen weil der (warum auch immer) beim Klicken nichts ausgelöst hat.. Kann man einer Schaltfläche auch mehrere Codes zuordnen?