Passwortabfrage vor Einblenden eines Arbeitsblattes per Doppelklick
#11
Hi Günter,

das PW bei seinem Code ist RPP, also der unterstellte Username im System.

Teste mal wie der bei dir lautet:


Code:
Sub User()
MsgBox Environ("username")
End Sub
Mit freundlichen Grüßen  :)
Michael
Top
#12
Nur wenn dein Environ("username") identisch ist zu "RPP" wird das Arbeitsblat "Topsecret" gezeigt.

Lass mal laufen


Code:
Sub M_test()
   msgbox environ("username")
End sub


Un nun ändere diese Code: statt "RPP", setze deine 'username' wie gezeigt im MsgBox.
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   If Target.Address = "$ZZ$11" Then
     Sheets("TopSecret").Visible = 2+3*(environ("username")="WillWissen")
     cancel=true
   end if
end Sub

wenn du nun doppelklickst in range("ZZ11") wird das ArbeitsBlatt "topsecret" gezeigt.
Top
#13
Hi Michael, hi snb,

genau das, was ihr mir vorschlagt, habe ich bereits getan; siehe auch meinen vorigen Beitrag:

Zitat:Ich habe mir meinen Usernamen in den Systeminformationen anzeigen lassen, damit ich die korrekte Schreibweise habe.
Ich habe den korrekten Usernamen (von der System-Info ausgelesen und auch aus der eben ausprobierten MsgBox) verwendet, ich habe den korrekten Tabellenblattname (ein Wort ohne Leerzeichen) verwendet und ich habe auch die targetadress überprüft. Es ist alles so eingetragen, wie es vorgeschlagen wurde und dennoch kommt keine Reaktion - keine Meldung, kein Ein-/ausblenden.
Aber egal, macht euch keinen Kopf; das Makro von Ralf tut seinen Dienst. Danke für euer Bemühen.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#14
Hi Günter,
meint Test sieht so aus und macht genau was dort im Code steht, erst ausblenden dann bei richtigem Environ(Usernamen) wird Tabelle2 eingeblendet.

Wie der Test zeigt, lautet der Application.Username in der MsgBox anders.

Teste mal deine Festlegungen in einer neuen Datei


PHP-Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As RangeCancel As Boolean)
   Dim UserName
   
If Target.Address "$B$1" Then
   Sheets
("Tabelle2").Visible False
   MsgBox Application
.UserName
   MsgBox Environ
("username")
     Sheets("Tabelle2").Visible * (Environ("username") = "Michael")
     Cancel True
   End 
If
End Sub 
Mit freundlichen Grüßen  :)
Michael
Top
#15
Hi Michael,

jetzt komme ich doch noch dazu, mir das nochmals anzusehen. Mit deiner Version hat's einwandfrei geklappt; snbs Vorschlag läuft bei mir definitiv nicht. Allerdings gibt's bei dir zwei Änderungen gegenüber snbs Makro. Du hast zum einen die Variablendeklaration drin, wobei ich mir nicht sicher bin, ob du diese nicht nur wegen der msgBox geschrieben hat, die den application.username ausliest. Und zum anderen blendest du erstmal das Blatt aus, bevor es eingeblendet wird.

Aber wie ich schon vorhin geschrieben habe, Ralfs Makro ist eingebaut und versieht tadellos seinen Dienst. Alles andere war für mich eine kleine Lern-/Verständigungshilfe (will ja schließlich auch mal VBA können :32:)
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#16
Moin Günter,

mein Code entspricht ja dem Grundgerüst von snb, aber um dir einerseits den Unterschied zu den Usernamen zu zeigen, da ich vermutet hatte, da läge dein Fehler, ist da nur noch das ausblenden der Tabelle drin, denn was will ich ausblenden wenn es nicht sichtbar ist? und die Deklaration ist drin weil ich eben sonst Fehlermeldung wegen nicht deklarierten Variable Username bekam.

Aber ist ja egal, du hast deine funktionierende Lösung und ist vergesse jetzt sicher bald wieder wie es ging.

Ist immer spannend, wenn mich Kollegen bitten, irgendeine früher vor 10-15 Jahren entwickelte Excelsache zu überarbeiten, man steigt wieder wie doof ein und versucht sich das klar zu machen unbd stolpert dann oft schon bei der Beseitigung der Sperren sprich Paßwortschutz. Aber dazu gibts ja Lösungen sich zu behelfen.
Mit freundlichen Grüßen  :)
Michael
Top
#17
Bitte, lese mein Post #14 nochmals sorgfältig durch

Sheets("TopSecret").Visible = 2+3*(environ("username")="*****")

wo "*****" steht muss du das Ergebnis von

Msgbox environ("username")

setzen.

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   If Target.Address = "$ZZ$11" Then
     Sheets("TopSecret").Visible = 2+3*(environ("username")="*****")
     cancel=true
   end if
end Sub

oder zeig mal im Schirm'print' das Ergebnis von msgbox environ("username")
Top
#18
Hi snb,

mein Username ist "Günter" (ohne "") und diesen habe ich ins Makro eingesetzt. So sieht es aus:

Zitat:Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   If Target.Address = "$ZZ$11" Then
     Sheets("TopSecret").Visible = 2+3*(environ("username")="Günter")
     cancel=true
   end if
end Sub

Es stimmen sowohl die Target.Adress als auch der Tabellenname korrekt überein (mehrfach überprüft!). Und trotzdem erfolgt keinerlei Reaktion auf den Doppelklick.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top
#19
Hast du schon verstanden dass es 2 unterschiedene usernames gibt ?



Code:
msgbox Application.username




Code:
msgbox environ("username")
Top
#20
Hi snb,

Zitat:Hast du schon verstanden dass es 2 unterschiedene usernames gibt ?

So gefühlte 20x habe ich doch schon gesagt, dass ich das alles (teils mehrfach) überprüft habe.

Hiermit getestet:

Zitat:Sub M_test()
    MsgBox Environ("username")
End Sub
Sub Test_Application()
    MsgBox Application.UserName
End Sub
Und das Ergebnis:

[
Bild bitte so als Datei hochladen: Klick mich!
]
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste