Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Spalten ein/ausblenden per Click

VBA Spalten ein/ausblenden per Click
19.08.2014 16:09:04
koskesh
Hallo, möchte per Click auf ein Button folgende Aktionen ausführen
- Spalten H:K ein bzw ausblenden
- Spalten L-O aus bzw einblenden
Alle vier Aktionen auf den selben Button (wien Toggle für ein/aus)
Die jeweiligen Spalten sollen nicht gleichzeitig sichtbar sein.
Nur für die Spalten H:K habe ich es so hinbekommen
Columns("H:K").EntireColumn.Hidden = Not Columns("H:K").EntireColumn.Hidden

Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Spalten ein/ausblenden per Click
19.08.2014 16:18:48
Daniel
Hi
Probiere mal:

With Range("H:K").EntireRow
.Hidden = not .Hidden
End With
With Range("L:O").EntireRow
.Hidden = not .Hidden
End with
bevor du den Code Startest, musst du dafür sorgen dass der eine Block ausgeblendet und der andere Eingeblendet ist.
wenn du den Fall absichern willst, dass jedmand von Hand noch ein- oder ausblendet, aber nach dem Klick wieder alles wie gewohnt sein soll, dann so:
Static x as Boolean
x = Not x
Range("H:K").EntireRow.Hidden = x
Range("L:O").EntrieRow.Hidden = Not x
Gruß Daniel

Anzeige
AW: VBA Spalten ein/ausblenden per Click
19.08.2014 16:30:09
koskesh
Krieg einen Debug Fehler. Keine Ahnung wieso

AW: VBA Spalten ein/ausblenden per Click
19.08.2014 16:37:11
Daniel
wenn du mir sagen würdest, bei welchem Code und in welcher Zeile, dann würde ich dir auch sagen, woran es liegt.
Tippfehler kannst du vermeiden, wenn du den Code selber schreibst und dabei die Intellisense verwendest, dh du tippst die ersten Buchstaben ein und drückst dann ALT+LEER.
wenn der Ausdruck schon eindeutig ist, bekommst, wird er automatisch vervollständigt, falls nicht, bekommst du eine Auswahlliste und kannst den passenden auswählen, so dass du nicht alles tippen musst.
Gruß Daniel

Anzeige
AW: VBA Spalten ein/ausblenden per Click
19.08.2014 16:40:08
Christian
Hallo,
wir sind hier in einem Forum, nicht im Kids-Chat, da gehört Anrede und Gruß dazu, gehört eigentlich zur guten Erziehung.... und zur Netiquette !!
Wo tritt den der Fehler auf?
MfG Christian

AW: VBA Spalten ein/ausblenden per Click
19.08.2014 20:35:32
Gerold
Hallo koskesh

Option Explicit
Dim Toggle As Boolean
Sub DeinButton_Klick()
If Toggle Then
Columns("H:K").EntireColumn.Hidden = True
Columns("L:O").EntireColumn.Hidden = False
Toggle = False
Else
Columns("H:K").EntireColumn.Hidden = False
Columns("L:O").EntireColumn.Hidden = True
Toggle = True
End If
End Sub
Gruß Gerold
Rückmeldung wäre nett.

Anzeige
AW: VBA Spalten ein/ausblenden per Click
19.08.2014 21:07:45
Daniel
Hi Gerold
nicht DIM Toggle as Boolean, sonder STATIC Toggle as Boolean
Mit DIM ist Toggle beim Start des Makros immer FALSE, weil die Variablenwerte nach Makroende gelöscht werden, ausser die Variable ist als STATIC deklariert, dann behält sie ihren Wert für den nächsten Lauf dieses Makros.
Gruß Daniel

Anzeige
AW: VBA Spalten ein/ausblenden per Click
19.08.2014 22:44:19
Gerold
Hallo Daniel
Stimmt, hast recht.
Hatte den von Robert nur -aus der Sub rausgeholt- und nicht weiter drauf geachtet.

Option Explicit
Static Toggle As Boolean
Sub DeinButton_Klick()
If Toggle Then
Columns("H:K").EntireColumn.Hidden = True
Columns("L:O").EntireColumn.Hidden = False
Toggle = False
Else
Columns("H:K").EntireColumn.Hidden = False
Columns("L:O").EntireColumn.Hidden = True
Toggle = True
End If
End Sub
Gruß Gerold
Rückmeldung wäre nett.

Anzeige
AW: VBA Spalten ein/ausblenden per Click
19.08.2014 22:48:43
Gerold
Hallo Daniel
Stimmt, hast recht.
Hatte den von Robert nur -aus der Sub rausgeholt- und nicht weiter drauf geachtet.

Option Explicit
Sub DeinButton_Klick()
Static Toggle As Boolean
If Toggle Then
Columns("H:K").EntireColumn.Hidden = True
Columns("L:O").EntireColumn.Hidden = False
Toggle = False
Else
Columns("H:K").EntireColumn.Hidden = False
Columns("L:O").EntireColumn.Hidden = True
Toggle = True
End If
End Sub
Gruß Gerold
Rückmeldung wäre nett.

Anzeige
AW: VBA Spalten ein/ausblenden per Click
19.08.2014 22:48:55
Gerold
Hallo Daniel
Stimmt, hast recht.
Hatte den von Robert nur -aus der Sub rausgeholt- und nicht weiter drauf geachtet.

Option Explicit
Sub DeinButton_Klick()
Static Toggle As Boolean
If Toggle Then
Columns("H:K").EntireColumn.Hidden = True
Columns("L:O").EntireColumn.Hidden = False
Toggle = False
Else
Columns("H:K").EntireColumn.Hidden = False
Columns("L:O").EntireColumn.Hidden = True
Toggle = True
End If
End Sub
Gruß Gerold
Rückmeldung wäre nett.

Anzeige
AW: VBA Spalten ein/ausblenden per Click
20.08.2014 08:12:54
koskesh
Funktioniert. Danke euch zwei.
Hatte es in der Zwischenzeit aber schon selber so gelöst:
Habe zusätzlich den Buttonnamen beim togglen verändert.
Vielen Dank & VG
Option Explicit
Private Sub cmdButton_Click()
If Columns("H:K").EntireColumn.Hidden = True Then
Columns("H:K").EntireColumn.Hidden = False
Columns("L:O").EntireColumn.Hidden = True
cmdButton.Caption = "Test"
Else
Columns("H:K").EntireColumn.Hidden = True
Columns("L:O").EntireColumn.Hidden = False
cmdButton.Caption = "OK"
End If
End Sub

Anzeige
AW: VBA Spalten ein/ausblenden per Click
24.08.2014 03:21:30
Adis
Hallo
If Columns("H:K").EntireColumn.Hidden = True Then
ich amüsiere mich köstlich. Vor allem über die Eigenlösungen im Forum s. oben (wollte ich gerade anbieten)
Sie stammt noch aus Excel Urzeiten, ich kenne sie aus Excel7, als es noch keine Toggel Button gab.
Gruss Adis

Anzeige
AW: VBA Spalten ein/ausblenden per Click
24.08.2014 08:34:22
Matthias
Hallo
Eine If-Abfrage ist da nicht nötig
Sorge einfach dafür das Einer der beiden Bereiche bereits ausgeblendet ist
Dann kannst Du mit folgendem Code wechselseitig ein- und ausblenden.
Application.ScreenUpdating = False
Columns("H:K").EntireColumn.Hidden = Not Columns("H:K").EntireColumn.Hidden
Columns("L:O").EntireColumn.Hidden = Not Columns("H:K").EntireColumn.Hidden
Mehr brauchst Du nicht.
Gruß Matthias

Anzeige
AW: VBA Spalten ein/ausblenden per Click
19.08.2014 16:19:24
Robert
Hallo koskesh
Sub DeinButton_Klick()
Dim Toggle As Boolean
If Toggle Then
Columns("H:K").EntireColumn.Hidden = True
Columns("L:O").EntireColumn.Hidden = False
Toggle = False
Else
Columns("H:K").EntireColumn.Hidden = False
Columns("L:O").EntireColumn.Hidden = True
Toggle = True
End If
Viele Grüße
Robert

Anzeige
AW: VBA Spalten ein/ausblenden per Click
19.08.2014 16:29:08
koskesh
Funktioniert nicht richtig. Das ausblenden funktioniert aber das wieder einblenden nicht.

AW: VBA Spalten ein/ausblenden per Click
20.08.2014 08:49:29
Robert
Die ToggleVariable muss als Static definiert werden, dann gehts.
Mein Fehler.
Viele Grüße
robert
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Spalten in Excel mit VBA ein- und ausblenden


Schritt-für-Schritt-Anleitung

Um in Excel mit VBA Spalten ein- und auszublenden, kannst Du den folgenden Code verwenden. Dieser Code ermöglicht es, die Spalten H bis K und L bis O per Klick auf einen Button zu toggeln.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu, indem Du mit der rechten Maustaste auf "VBAProject" klickst und "Insert" > "Module" wählst.
  3. Kopiere den folgenden Code in das Modul:
Option Explicit
Static Toggle As Boolean

Sub DeinButton_Klick()
    If Toggle Then
        Columns("H:K").EntireColumn.Hidden = True
        Columns("L:O").EntireColumn.Hidden = False
        Toggle = False
    Else
        Columns("H:K").EntireColumn.Hidden = False
        Columns("L:O").EntireColumn.Hidden = True
        Toggle = True
    End If
End Sub
  1. Füge einen Button in Dein Excel-Blatt ein. Klicke mit der rechten Maustaste auf den Button und wähle "Makro zuweisen". Wähle das Makro DeinButton_Klick aus.
  2. Klicke auf den Button, um die Spalten ein- oder auszublenden.

Häufige Fehler und Lösungen

  • Fehler: Debug-Fehler beim Ausführen des Codes

    • Stelle sicher, dass der Code korrekt eingegeben wurde. Achte besonders auf Tippfehler und die Verwendung von Static anstelle von Dim für die Toggle-Variable.
  • Fehler: Spalten werden nicht richtig angezeigt

    • Überprüfe, ob die Spalten H bis K oder L bis O bereits ausgeblendet sind, bevor Du den Button klickst. Der Code funktioniert nur, wenn eine der beiden Gruppen bereits sichtbar ist.

Alternative Methoden

Eine einfachere Methode, um Spalten in Excel zu verwalten, besteht darin, einen Button zu verwenden, der beim Klicken die Sichtbarkeit der Spalten wechselt. Hier ist ein alternativer Code:

Application.ScreenUpdating = False
Columns("H:K").EntireColumn.Hidden = Not Columns("H:K").EntireColumn.Hidden
Columns("L:O").EntireColumn.Hidden = Not Columns("H:K").EntireColumn.Hidden
Application.ScreenUpdating = True

Dieser Code benötigt keine Toggle-Variable, solange Du sicherstellst, dass entweder die H:K oder die L:O Spalten zu Beginn sichtbar sind.


Praktische Beispiele

  1. Makro für Button einfügen: Um den Button zu erstellen, gehe zu "Entwicklertools" > "Einfügen" > "Button (Formularsteuerung)" und ziehe ihn auf Dein Arbeitsblatt. Weise das Makro DeinButton_Klick zu.

  2. Spalten mit Statusanzeige: Du kannst den Button-Text ändern, um den Status anzuzeigen:

If Columns("H:K").EntireColumn.Hidden Then
    cmdButton.Caption = "Einblenden"
Else
    cmdButton.Caption = "Ausblenden"
End If

Tipps für Profis

  • Verwende die With-Anweisung, um den Code kompakter zu gestalten:
With Columns("H:K")
    .EntireColumn.Hidden = Not .EntireColumn.Hidden
End With
  • Nutze die Application.ScreenUpdating-Eigenschaft, um das Flackern beim Ausblenden der Spalten zu minimieren.

FAQ: Häufige Fragen

1. Warum funktioniert mein Makro nicht? Überprüfe, ob die Spalten, die Du ein- oder ausblenden möchtest, korrekt angegeben sind und ob der Button dem richtigen Makro zugeordnet ist.

2. Kann ich mehrere Spalten gleichzeitig ausblenden? Ja, Du kannst den Code anpassen, um mehrere Spalten gleichzeitig auszublenden, indem Du die entsprechenden Spaltenbereiche in der Columns-Anweisung angibst.

3. Was ist der Unterschied zwischen Dim und Static? Dim definiert eine lokale Variable, die beim Beenden des Makros gelöscht wird, während Static die Variable ihren Wert zwischen den Ausführungen des Makros behält.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige