Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1260to1264
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA - WS usergesteuert einblenden

VBA - WS usergesteuert einblenden
Torsten
Hallo beisammen,
ich habe vor ein paar Tagen von Rudi Mantaire einen Code zum usergesteuerten einblenden von Shapes erhalten und wollte dies heute auch für Worksheets umsetzen:
Private Sub Workbook_Open()
With Worksheets("START")
.Visible = _
Not IsError(Application.Match(IIf(IsNumeric(Environ("Username")), _
Environ("Username") * 1, Environ("Username")), Sheets("SETT").Range("A1:A2"), 0))
End With
End Sub
Ich habe aber festgestellt, daß das ausgeblendete WS über Format-Blatt-Einblenden wieder eingeblendet werden kann. Wie muß der Code geändert werden, damit dies unterbunden wird (also xlveryhidden)?
Vielen Dank für Eure Hilfe.
Gruß
Torsten

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA - WS usergesteuert einblenden
14.05.2012 16:11:55
Hajo_Zi
Hallo Torsten,
warum benutzt Du nicht XlVeryHidden?

AW: VBA - WS usergesteuert einblenden
14.05.2012 16:15:59
fcs
Hallo Thorsten,
wenn über das Menü "Blatt einblenden" das Einblenden nicht möglich sein soll, dann muss die Visible-Eigenschaft vor dem Schließen der Datei auf xlSheetVeryHidden gesetzt werden.
In Excel muss aber immer mindestens 1 Blatt sichtbar bleiben. Deshalb ggf. ein Dummy-Blatt (in meinem Beispiel "Info") einfügen.
Bei mir (Username ist nicht nummerisch) tritt bei dem Workbook-Open-Ereignis ein Typ-Fehler für die Multiplikation auf; daher eine If...Else...Endif Konstruktion.
Gruß
Franz
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim boolSaved As Boolean
boolSaved = Me.Saved
Worksheets("Info").Activate
Worksheets("START").Visible = xlSheetVeryHidden
If boolSaved = True Then Me.Save
End Sub
Private Sub Workbook_Open()
With Worksheets("START")
If .Visible  xlSheetVeryHidden Then .Visible = xlSheetVeryHidden
If IsNumeric(Environ("Username")) Then
.Visible = Not IsError(Application.Match(Environ("Username") * 1, _
Sheets("SETT").Range("A1:A2"), 0))
Else
.Visible = Not IsError(Application.Match(Environ("Username"), _
Sheets("SETT").Range("A1:A2"), 0))
End If
If .Visible = xlSheetVisible Then .Activate
End With
End Sub

Anzeige
AW: VBA - WS usergesteuert einblenden
14.05.2012 16:38:52
Torsten
Hallo Franz,
besten Dank für Deine Rückmeldung. Ich hatte eigentlich gedacht, daß hier lediglich irgendwo noch ein Parameter eingefügt werden müsste. Das der Code so erweitert werden muß, hatte ich nicht gedacht...
Wie auch immer.
Leider funktioniert's nicht ganz. Das WS "START" ist immer noch über Format-Blatt-Einblenden wieder einblendbar. Kannst Du nochmal schauen?
Gruß
Torsten
AW: VBA - WS usergesteuert einblenden
14.05.2012 20:38:49
fcs
Hallo Torsten,
nach Anpassung der Makros, Speichern, Schließen und wieder Öffnen funktioniert es.
Zum Testen muss du die Datei ohne Aktivieren der Makros öffnen oder ein User, dessen Username nicht in der Liste im Blatt "SETT" steht muss die Datei öffnen.
Zusätzlich muss für das VBA-Projekt im VBA-Editor unter "Extras--&gt Eigenschaften VBA-Projekt" im Register "Schutz"
- die Anzeige des Projekts gesperrt werden.
- ein Kennwort gesetzt werden
Hier eine Beispiel-Datei (ohne Kennwort für VBA-Projekt)
https://www.herber.de/bbs/user/80136.xls
Gruß
Franz
Anzeige
AW: VBA - WS usergesteuert einblenden
15.05.2012 09:42:50
Torsten
Hallo Franz,
die von Dir vorgschlagene Vorgehensweise hatte ich auch schon so ausprobiert - lief aber nicht.
In der Zwischenzeit hat Sheldon eine Lösung geliefert, die einwandrei funktioniert.
Hab Dank für Deine Bemühungen.
Gruß
Torsten
AW: VBA - WS usergesteuert einblenden
14.05.2012 17:06:52
Sheldon
Hi Torsten,
geht nicht mehr gaanz so einfach, aber in etwa so:
With Worksheets("START")
Select Case IsError(Application.Match(IIf(IsNumeric(Environ("Username")), _
Environ("Username") * 1, Environ("Username")), Sheets("SETT").Range("A1:A2"), 0))
Case True
.Visible = xlVeryHidden
Case False
.Visible = True
End Select
End With
Gruß
Sheldon
Anzeige
erledigt: VBA - WS usergesteuert einblenden
15.05.2012 09:39:29
Torsten
Hallo Sheldon,
Perfekt - Funktioniert einwandfrei!
Vielen Dank für Deine Unterstützung.
Gruß
Torsten
na mit Rudis Vorarbeit...
15.05.2012 10:24:25
Sheldon
...konnte ja nix mehr schief gehen! Seine Lösung ist eigentlich die elegantere, weil die Visible-Eigenschaft das umgekehrte Ergebnis der Userprüfung wurde. Ich habe dann ja nur noch das Visible=false 'übersetzt' in Visible=xlVeryHidden.
Gruß
Sheldon

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige