Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Einblenden von Spalten nur über Makro

Einblenden von Spalten nur über Makro
18.04.2005 12:54:47
Spalten
Hallo alle zusammen,
Ich möchte gern die Spalten G bis L über ein Makro ausblenden und anschließend möchte ich das VBA- Projekt schützen, damit keiner die Spalten einblenden kann. Folgendes Makro habe ich:

Sub ausblenden()
Columns("G:L").EntireColumn.Hidden = True
End Sub

Hiermit werden die Spalten ausgeblendet.
Problem: die Spalten können ohne ein Makro wieder eingeblendet werden, was aber nicht sein soll. Wie müsste ich das Makro schreiben, oder gibt es dafür keine Lösung!?
Ich hoffe mir kann jemand helfen.
Danke im voraus!
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einblenden von Spalten nur über Makro
18.04.2005 13:09:43
Spalten
Hallo Andre,
ich habe folgende Codes (in DieseArbeitsmappe)im Einsatz:
Es liegt ein Blattschutz auf der Tabelle (ohne Passwort).
Du wirst zweimal nach der Berechtigung gefragt. Ist sie richtig ("test"), werden die Spalten eingeblendet. Beim Schliessen werden sie wieder ausgeblendet.

Private Sub Workbook_Open()
Passw = InputBox("Geben Sie bitte den Berechtigungscode ein !", "Kontrollabfrage")
If Passw <> "test" Then
MsgBox "Leider falsch. Noch ein Versuch"
Else
GoTo weiter
End If
Passw = InputBox("Geben Sie bitte den Berechtigungscode ein !", "Kontrollabfrage")
If Passw <> "test" Then
MsgBox "Kein Zugriff"
Exit Sub
End If
weiter:
ThisWorkbook.Sheets("Tabelle1").Unprotect 'ggf "Passwort"
Sheets("Tabelle1").Columns("G:L").Hidden = False
End Sub


Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Sheets("Tabelle1").Unprotect 'ggf "Passwort"
Sheets("Tabelle1").Columns("G:L").Hidden = True
ThisWorkbook.Sheets("Tabelle1").Protect 'ggf "Passwort"
ThisWorkbook.Save
End Sub

Gruß
Harald
Anzeige
AW: Einblenden von Spalten nur über Makro
18.04.2005 13:12:54
Spalten
Hallo Andre,
Worksheets("xxx").Protect passwort, True, True, True, True
Das letzte True steht für UserInterfaceOnly (nur per Makro einstellbar), dann wird das Blatt zwar gegen Eingriffe von der Benutzeroberfläche, nicht aber gegen Eingriffe durch Makros geschützt (ist in der Editorhilfe etwas verworren erläutert).
Alles klar?
Gruß Luc :-?
Anzeige
AW: noch nicht gelöst!!!
18.04.2005 14:06:01
Andre
Dank euch beiden,ich habe soeben eure Varianten getestet, funktioniert prima, aber leider ist der Blattschutz nicht sicher genug. Das einblenden müsste nur durch ein Makro möglich sein so änlich wie beim ausblenden eines Tabellenblattes, wo ich dies auch wieder über ein Makro einblenden kann sofern man den VBA Projektcode kennt. Mit dem folgenden Makro ist nicht ersichtlich, dass das Tabellenblatt1 ausgeblendet wurde.

Sub ausblenden()
Sheets("Tabelle1").Visible = xlVeryHidden
End Sub

So ähnlich müsste es mit dem Spalten aus- und einblenden funktionieren.
Blos wie?
Anzeige
AW: noch nicht gelöst!!! Vielleicht jetzt!
18.04.2005 15:22:23
Luc
Hallo Andre,
falls du nur meinst, dass es stört, dass man noch sehen kann, dass hier Zeilen ausgeblendet wurden, kann ich mir eine etwas aufwendige Lösung vorstellen. Aber ein veryhidden-vergleichbares Verfahren gibt's m.W. für Zeilen/Spalten nicht.
Was das nicht sicher genug betrifft, ist mir nicht ganz klar warum! Ohne Passwort kann man ein geschütztes Blatt nicht verändern, nur ansehen. Die Makros musst du dann natürlich im Editor ebenfalls mit Passwort schützen, dass sie nicht eingesehen wdn können. Und ein Makro, das du zum evtl Einblenden benutzen willst, musst du natürlich verstecken. Das geht mit Private am Anfang des Makrokopfes (allerdings fkt das Makro dann auch nur im jeweiligen Projekt). Das Makro kann dann nur aufrufen, wer seinen Namen kennt.
Zur Tarnung des Ausgeblendetseins von Zeilen/Spalten schlage ich vor, Arbeitsblatt-Vorspalte und -Kopfzeile auszublenden (1.Stufe="hidden") und wenn es noch trickreicher sein soll, neue anzulegen (aber über alle Zeilen und Spalten des Blattes - 2.Stufe="very hidden"). Außerdem kann auch noch die Anzeige von Formeln verhindert wdn.
Gruß Luc :-?
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Spalten in Excel über Makros ein- und ausblenden


Schritt-für-Schritt-Anleitung

Um Spalten in Excel über ein Makro ein- und auszublenden, kannst du die folgenden Schritte ausführen:

  1. Makro erstellen: Öffne den VBA-Editor mit ALT + F11.

  2. Neues Modul hinzufügen: Klicke mit der rechten Maustaste auf „VBAProject (dein Arbeitsmappenname)“ und wähle „Einfügen“ > „Modul“.

  3. Makro einfügen: Kopiere den folgenden Code in das Modul:

    Sub ausblenden()
       Columns("G:L").EntireColumn.Hidden = True
    End Sub
    
    Sub einblenden()
       Dim Passw As String
       Passw = InputBox("Geben Sie bitte den Berechtigungscode ein !", "Kontrollabfrage")
       If Passw = "test" Then
           Columns("G:L").EntireColumn.Hidden = False
       Else
           MsgBox "Zugriff verweigert."
       End If
    End Sub
  4. Makros schützen: Um den VBA-Code zu schützen, kannst du die Arbeitsmappe mit einem Passwort sichern.

  5. Makros ausführen: Du kannst das entsprechende Makro ausführen, um die Spalten ein- oder auszublenden.


Häufige Fehler und Lösungen

  • Spalten sind nicht versteckt: Überprüfe, ob du das Makro tatsächlich ausgeführt hast. Manchmal kann es helfen, die Arbeitsmappe neu zu starten.
  • Zugriff verweigert: Stelle sicher, dass du den richtigen Berechtigungscode eingibst. Der Code ist auf „test“ gesetzt.
  • Excel zeigt ausgeblendete Spalten an: Stelle sicher, dass der Blattschutz aktiv ist. Ohne Blattschutz können Benutzer die Spalten manuell einblenden.

Alternative Methoden

Du kannst auch die Funktion „Gruppieren“ verwenden, um Spalten in Excel ein- und auszublenden. Hierzu gehst du wie folgt vor:

  1. Markiere die Spalten G bis L.
  2. Gehe zu „Daten“ > „Gruppieren“.
  3. Verwende das Pluszeichen (+), um die Spalten anzuzeigen oder auszublenden.

Diese Methode ist einfacher und erfordert kein VBA, bietet jedoch nicht die gleiche Sicherheit wie ein Makro.


Praktische Beispiele

Wenn du alle Spalten in einem bestimmten Blatt einblenden möchtest, kannst du folgenden Code verwenden:

Sub vba_alle_spalten_einblenden()
    Sheets("Tabelle1").Columns.Hidden = False
End Sub

Um alle Spalten in Excel zu verstecken und sicherzustellen, dass sie nur über ein Makro wieder angezeigt werden können, kannst du den folgenden Code verwenden:

Sub excel_very_hidden_einblenden()
    Sheets("Tabelle1").Columns("G:L").EntireColumn.Hidden = True
    Sheets("Tabelle1").Visible = xlVeryHidden
End Sub

Tipps für Profis

  • Verstecke Makros, indem du das Schlüsselwort Private im Kopf des Makros verwendest. So kann das Makro nur innerhalb des Projekts aufgerufen werden.
  • Erstelle eine Benutzeroberfläche, um die Eingabe des Berechtigungscodes zu erleichtern, anstatt ein InputBox zu verwenden.
  • Überlege, ob du den Blattschutz mit einem Passwort sichern möchtest, um unbefugte Zugriffe zu verhindern.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass niemand die Spalten ohne Makro einblenden kann? Du solltest den Blattschutz aktivieren und sicherstellen, dass die Makros im VBA-Editor geschützt sind.

2. Gibt es eine Möglichkeit, das Einblenden von Spalten zu automatisieren? Ja, du kannst ein Makro erstellen, das beim Öffnen der Datei automatisch ausgeführt wird, um die Spalten zu verstecken oder anzuzeigen.

3. Kann ich auch Zeilen mit einem Makro ein- und ausblenden? Ja, das funktioniert ähnlich wie bei Spalten. Verwende Rows("X:Y").EntireRow.Hidden = True oder False, um die Zeilen auszublenden oder anzuzeigen. Achte darauf, dass „excel zeilen können nicht eingeblendet werden“ nicht der Fall ist, wenn das Makro korrekt ausgeführt wird.

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