Alle Tabellen ausser einer ausblenden

Hallo Experten,

ich habe eine Tabelle mit Passwortabfrage kreirt.
wenn ich auf die Autoform klicke, startet es das Passwort-Makro und ich kann ein Passwort eingeben. Ist dies richtig blendet es ein weiteres Tabellenblatt ein. Nun verlasse ich dieses wieder, und es wird wieder ausgeblendet (Worksheet_Deactivate()).

So funktioniert es wunderbar.
Nun habe ich bis am Schluss 200 Tabellenblätter.
Wenn die Arbeitsmappe geöffnet wird, soll nur das Blatt mit der Passwortabfrage offen sein, nach eingeben des richtigen Passwortes muss dieses ausgeblendet und alle anderen eingeblendet werden.

wenn ich nun ein makro (z.b) „Sicherheit“ aktiviere, sollten wiederum alle ausgeblendet werden und das Blatt mit der Abfrage müsste dann wieder zu sehen sein…

Ist dies in dieser Art realisierbar?

habe meine Datei zum Download bereitgestellt unter:

http://www.haenggi.li/Passwortabfrage.zip

Das Passwort lautet: „test“

Hi Sascha,
verstehe ich das richtig, du willst dass jemand ohne das Passwort nur eine belanglose Startseite mit der Aufforderung zur Passworteingabe sieht und nur wenn er das Passwort korrekt eingibt ist diese Startseite weg und er sieht die Datenseiten?
Dafür hat jmd schon vba-Code geschrieben.
Sag Bescheid wenn ich den Link raussuchen soll, mir fällt grad nur der Vorname ein aber in seinem Hp-Link steht sein Nachname, da müßte ich drüber nachgrübeln um den Link wieder auszukramen.
Gruß
Reinhard

Hallo Reinhard.

Ja genauso sollte es sein wie Du es beschrieben hast. wäre nett wenn Du den Beitrag finden könntest. Bin auch schon auf der suche, bisher vergebens…

Hallo Reinhard.

Ja genauso sollte es sein wie Du es beschrieben hast. wäre
nett wenn Du den Beitrag finden könntest. Bin auch schon auf
der suche, bisher vergebens…

Hi Sascha,
schlechte Nachricht, anscheinend gibt es die Seite nicht mehr.
Siehe hier :
http://www.google.de/search?hl=de&q=ziplies&btnG=Goo…
Man kann sie nicht mehr anklicken, zumindest die nachfolgenden Seiten nicht mehr.
Und da stand unter "vba-beispiel "genau deine Lösung.
Ich habe seinerzeit den Code überflogen und auch ohne desen kenntnis kriege ich das hin, aber warum das Rad neu erfinden, ich weiss, da sind 991 Antworten. Check die mal, wenn du da nix findest , schreibe ich evtl. den Code, bin grad sehr müde wenn ich dran denk dies zu tun, obwohl, schwierig oder lang isser nicht.
Aber da dies Problem nicht unbekannt ist, hat vielleicht jmd hier den Code zur Lösung schon fertig.
Gruß
Reinhard

Hallo Reinhard,

vielen lieben Dank schon mal. werde das ganze mal durchsehen und auch weiterhin im Web suchen…

Danke für den Tip. Vielleicht kann ich Ihn ja mal anschreiben wenn ich eine Adresse finde.

Schönen Sonntag Abend wünsche ich Dir

Gruss Sascha

Hallo Reinhard,

bis Du Reinhard deine Sache fertig hast, zeig ich ihm nochmal so einige kniffe, wie er seine Tabellenblätter erfolgreich verstecken tut :smile:

Da hab ich eine Diskussion gefunden.
http://www.supportnet.de/fresh/2005/5/id1061770.asp

Guten morgen,

Vielen Dank für den Beitrag, echt interessant…
Im grossen und ganzen ist das schon das was ich suche, nur ist das Problem dass ich 200 Blätter habe, ansonsten wäre es ja kein Problem das ganze mit diesem Code zu realisieren:

Sheets("Datenblatt1").Visible = False
Sheets("Datenblatt2").Visible = False
Sheets("Datenblatt3").Visible = False

Klar kann ich diese Zeilen um 200 erweitern und alles numerieren, aber… :smile:) hoffe ihr versteht mich.

bräuchte eigentlich einen code der besagt dass ALLE Blätter ausgeblendet werden und am schluss kann ich noch eine zeile für das sichtbare blatt einfügen.

Sheets("Willkommen").Visible = True

Hi Sascha,
die Datei

http://rapidshare.de/files/33526670/NurDatenSichtbar…

hat nachfolgenden Code, probiere sie mal aus. Anpassen muss ich noch das .Save, sonst scheint sie zu laufen.

in „DieseArbeitsmappe“:

Option Explicit
Private Sub Workbook\_BeforeClose(Cancel As Boolean)
Call Beenden
End Sub

Private Sub Workbook\_Open()
Dim Eingabe
With Worksheets("Tabelle3")
 .Unprotect "xyz"
 .UsedRange.Clear
 .Protect "xyz"
End With
Eingabe = InputBox("Bitte Passwort eingeben: ")
If Eingabe = "xyz" Then
 Call Starten
 Exit Sub
End If
ThisWorkbook.Save
Call Beenden
End Sub

In ein Modul:

Option Explicit

Sub Starten()
Dim Ws As Worksheet, N As Integer, Vorhanden As Boolean
With ThisWorkbook
 For N = 1 To .CustomDocumentProperties.Count
 If .CustomDocumentProperties(N).Name = "LetztesAktivesBlatt" Then Vorhanden = True
 Next N
 If Vorhanden = False Then
 .CustomDocumentProperties.Add Name:="LetztesAktivesBlatt", Type:=msoPropertyTypeString, LinkToContent:=False, Value:=.Worksheets(1).Name
 If .CustomDocumentProperties("LetztesAktivesBlatt").Value = "Tabelle3" Then
 .CustomDocumentProperties("LetztesAktivesBlatt").Value = .Worksheets(2).Name
 End If
 End If
 .Unprotect "xyz"
 For Each Ws In .Worksheets
 If Ws.Name "Tabelle3" Then Ws.Visible = True
 Next Ws
 .Worksheets("Tabelle3").Visible = xlVeryHidden
 .Worksheets(.CustomDocumentProperties("LetztesAktivesBlatt").Value).Activate
 .Save
End With
End Sub

Sub Beenden()
Dim Ws As Worksheet
Application.ScreenUpdating = False
With ThisWorkbook
 .Unprotect "xyz"
 With .Worksheets("Tabelle3")
 .Visible = True
 .Unprotect "xyz"
 .Range("b10") = "Information:"
 .Range("b12") = "Sie haben diese Arbeitsmappe mit deaktivierten Makros gestartet oder das Passwort falsch eingegeben."
 .Range("b14") = "Schliessen Sie die Arbeitsmappe, danach starten Sie sie neu mit aktivierten Makros und Sie gelangen zur Passwortabfrage."
 .Range("b16") = "Bei korrekter Eingabe des Passwortes stehen Ihnen alle anderen Tabellenblätter dieser Arbeitsmappe zur Verfügung."
 .Protect "xyz"
 End With
 .CustomDocumentProperties("LetztesAktivesBlatt").Value = ActiveSheet.Name
 For Each Ws In .Worksheets
 If Ws.Name "Tabelle3" Then Ws.Visible = xlVeryHidden
 Next Ws
 .Protect "xyz"
End With
Application.ScreenUpdating = True
ThisWorkbook.Save
End Sub

Gruß
Reinhard

Hallo Reinhard,

vielen dank für deine datei. ist richtig ins detail aufgebaut :smile:, aber sollte bei der eingabe des passwortes „xyz“ nicht das tabellenblatt3 eingeblendet werden?

oder verstehe ich da etwas falsches? so gut verstehe ich den code leider nicht.

hier noch meine datei, so in etwa sollte es funktionieren (passwort: test)

http://rapidshare.de/files/33527951/Passwortabfrage1…

nur sollte der code der die einzelnen sheets ausblendet

Sheets("Datenblatt1").Visible = False
Sheets("Datenblatt2").Visible = False
Sheets("Datenblatt3").Visible = False

ein allgemeiner sein für ALLE Blätter…

also mit for next schleife

maxsheets = Application.Sheets.Count

for i=0 to maxsheets-1 Step=1
ThisWorkbook.Sheets(i).Visible = False
Next i

oder war es

for i=1 to maxsheets Step=1
ThisWorkbook.Sheets(i).Visible = False
Next i

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

scheint leider auch nicht zu funkzionieren :frowning:

aber danke trotzdem

gruss sascha

Hi Sascha,

vielen dank für deine datei. ist richtig ins detail aufgebaut

-), aber sollte bei der eingabe des passwortes „xyz“ nicht

das tabellenblatt3 eingeblendet werden?

nein,
deaktivierte Makros: Nur Tabelle3 sichtbar, alle anderen versteckt
falsches Passwort : Nur Tabelle3 sichtbar, alle anderen versteckt
richtiges Passwort : Alle sichtbar, außer Tabelle3

oder verstehe ich da etwas falsches?

ja, Probier doch mal in meiner datei alle drei Fälle.

hier noch meine datei, so in etwa sollte es funktionieren
(passwort: test)

http://rapidshare.de/files/33527951/Passwortabfrage1…

nur sollte der code der die einzelnen sheets ausblendet

Sheets(„Datenblatt1“).Visible = False
Sheets(„Datenblatt2“).Visible = False
Sheets(„Datenblatt3“).Visible = False

ein allgemeiner sein für ALLE Blätter…

„Alle“ geht eh nicht da weigert sich Excel, eins muss sichtbar bleiben.
Und in meinem Code und dem von Rakon siehst du die Schleifen.

und Visible=False langt nicht , dass kann man in Excl locker wieder einblenden.

Gruß
Reinhard

ok, super. werde es gleich testen. vielen lieben dank :smile:))