193 Aufrufe
Gefragt in Tabellenkalkulation von robbi58 Mitglied (727 Punkte)
Bearbeitet von robbi58

Liebe Leute!
Ich habe im WEB folgenden Code für das Ein- und Ausblenden von Spalten gefunden:

Sub MultiSelectHidden()

   Const csHidden As String = "Spalten ausblenden"

   Const csVisible As String = "Spalten einblenden"

   With ActiveSheet.Buttons(1)

      If .Caption = csHidden Then

         Selection.EntireColumn.Hidden = True

         .Caption = csVisible

      Else

         Columns.Hidden = False

         .Caption = csHidden

      End If

   End With

End Sub

Dieser funktioniert einwandfrei. Ich kann durch einen Klick auf eine Zelle (auch mehrere sind möglich) und dem anschließenden Klick auf die Schaltfläche einzelne oder mehrere Spalten ein- und ausblenden.
Der Haken dabei: wenn ich Eintragungen in Zellen vornehme, dann werden diese automatisch übernommen.
Wie kann ich dies verhindern oder anders gefragt: wie muss ich den Code verändern, damit ich nur vorher genau definierte Spalten (oder auch Zeilen) ein- und ausblenden kann.

Es handelt sich nämlich um einen Test, wo nach den Eintragungen die Lösungen ein-bzw. ausgeblendet werden sollen.

Danke und Grüße von Robert

17 Antworten

0 Punkte
Beantwortet von robbi58 Mitglied (727 Punkte)
Bearbeitet von robbi58
Ein herzliches Hallo an die Runde!

Passend zum Thema hätte ich eine Frage, bzw. ein Problem!

Meine Arbeitsmappe besteht aus 50 Blättern. Ich möchte nun in der gesamten Arbeitsmappe auf allen Blättern die Spalte „R“ aus-, bzw. einblenden. Bisher musste ich jedes einzelne Blatt anwählen!

Bin im Web leider nicht fündig geworden! Vielleicht hat jemand eine Idee, eine Anregung, um mein Problem zu lösen.

Danke im Voraus für eure Anregungen.

LG Robert
+1 Punkt
Beantwortet von steffen2 Experte (6k Punkte)

Hallo,

ergänze das in dem Code

Dim wksTabelle As Worksheet
For Each wksTabelle In ThisWorkbook.Worksheets
  bisherige With-Schleife
Next

Gruß Steffen2

0 Punkte
Beantwortet von robbi58 Mitglied (727 Punkte)
Hallo Steffen 2,

zunächst recht herzlichen Dank für deine Ergänzung zum bestehenden Code!
Ich habe es ergänzt und es funktioniert einwandfrei!

Ich muss meine Frage ergänzen: wie muss ich den Code verändern, wenn es ohne Button funktionieren soll?
Ich bearbeite nämlich zunächst die Datei, erst am Schluss will ich auf allen Blättern per vba die Spalte R ausblenden, in weiterer Folge alle Blätter gleichzeitig schützen (diesen Code habe ich bereits), bevor ich diese zur Bearbeitung an die SchülerInnen weitergebe.

Umgekehrt will ich bei der Überarbeitung zunächst auf allen Blättern den Blattschutz wieder entfernen und wieder alle R-Spalten einblenden (dort stehen nämlich meine Berechnungsformeln).

Wie gesagt, das Problem Blattschutz ist bereits gelöst, mit fehlt nur noch ein vba-Code für das Aus- und Einblenden aller R-Spalten (ohne Button).

Danke und lG von Robert
0 Punkte
Beantwortet von steffen2 Experte (6k Punkte)

wie meinst du "ohne Button"

wann soll es passieren? Irgend ein Ereignis wird benötigt.

Wenn du "Fertig" ins Mikrofon sagst, erkennt Excel nicht wink

Gruß Steffen2

0 Punkte
Beantwortet von robbi58 Mitglied (727 Punkte)
Hallo Steffen2,

mir ist klar, dass ich den Code "aufrufen" muss, ohne Mikro.

Beim Blattschutz gehe ich so vor: Ich klicke auf Makro, rufe dann das Modul "Blatt schützen" auf und klicke auf "ausführen".

Das habe ich gemeint mit "ohne Button".

LG Robert
0 Punkte
Beantwortet von steffen2 Experte (6k Punkte)

Du hast ja irgendwo den Code für den Button. Den kannst du genau so auch schon jetzt aufrufen.

Private Sub ...ButtonAufrufen...
der Code
End Sub

Und den Inhalt davon kannst du im Prinzip zum anderen Code verschieben.

Gruß Steffen2

0 Punkte
Beantwortet von robbi58 Mitglied (727 Punkte)
Hallo Steffen2,

wieder was dazugelernt.

Recht herzlichen Dank!

Robert
...