Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
644to648
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
644to648
644to648
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

userform schliessen

userform schliessen
29.07.2005 06:43:07
Klaus
Guten Morgen zusammen
Ich habe mehrere Userformen, die durch CommandButtons "Weiter" nacheinander aufgerufen werden. Ich habe das "Schliessen Kreuz" mit dem Code:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Cancel = 1
MsgBox "Bitte verlassen Sie das Dialogfeld mit den Schaltflächen.", _
vbOKOnly + vbInformation, "Bitte Schaltfläche betätigen."
End If
End Sub

unterdrückt.
Nun möchte ich aber eine Möglichkeit haben, die Userform trotzdem zu schliessen (nur ich, und nicht der Anwender). Geht das irgendwie über ein Password oder einer Tastenkombination?
Vielen Dank im Voraus
Gruss Klaus

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: userform schliessen
29.07.2005 07:39:50
Frederik
Guten MOrgen!
Ja, das geht, in dem du z.B. den Benutzernamen abfragst und je nachdem das schließen zulässt oder nicht:
Benutzernamen rausfinden:
Declare Function GetUserName Lib "advapi32.dll " Alias "GetUserNameA" (ByVal lpBuffer As String, nsize As Long) As Long
Dim Buffer As String * 100
Dim buffLen As Long
Function Benutzername()
buffLen = 100
GetUserName Buffer, buffLen
Benutzer = Left(Buffer, buffLen - 1)
End Function
Eingebaut sollte das so aussehen:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
benutzername
if benutzer = "deinName" then
exit sub
end if
If CloseMode = 0 Then
Cancel = 1
MsgBox "Bitte verlassen Sie das Dialogfeld mit den Schaltflächen.", _
vbOKOnly + vbInformation, "Bitte Schaltfläche betätigen."
End If
End Sub

Gruß
Frederik
Anzeige
wg. Username (@Frederik)
29.07.2005 07:55:20
Matthias
Hallo Frederik,
ich lese deine API-Funktion zur Ermittlung des Usernamen immer wieder. Was spricht eigentlich gegen die (doch viel einfachere) Form Environ("USERNAME")?
Gruß Matthias
AW: wg. Username (@Frederik)
29.07.2005 08:02:00
Frederik
Hallo!
Wüsste nichts was dagegenspricht - kannte diese Form nicht!
Gruß
F.
AW: wg. Username (@Frederik)
29.07.2005 08:21:34
Hajo_Zi
Hallo Matthias,
das Betriebssystem 97 und ich glaube auch ME
Bitte keine Mail, Probleme sollten im Forum gelöst werden.
Microsoft MVP für Excel
Das Forum lebt auch von den Rückmeldungen.
Betriebssystem XP Home SP2 und Excel Version 2003 SP1.


Anzeige
AW: userform schliessen
29.07.2005 08:16:29
Klaus
Vielen Dank für Eure Antworten, aber geht es nicht auch anders, weil ich z.B. bei einem Anwender, der die Datei geöffnet hat, eingreifen möchte? So müsste der Anwender immer erst aus der Datei aussteigen und ich mich anmelden.
AW: userform schliessen
29.07.2005 08:32:28
Matthias
Hallo Klaus,
z.B.
erzeuge eine Textbox für das Kennwort, Eigenschaft PasswordChar = "*".
nimm diesen Code (hier heißt sie TextBox10):

Private Sub UserForm_Initialize()
TextBox10.Visible = False
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
If TextBox10 <> "kennwort" Then
TextBox10.Visible = Not TextBox10.Visible
Cancel = 1
MsgBox "Bitte verlassen Sie das Dialogfeld mit den Schaltflächen.", _
vbOKOnly + vbInformation, "Bitte Schaltfläche betätigen."
With TextBox10
If .Visible Then .SetFocus
End With
End If
End If
End Sub

Ich gebe zu, nicht sehr elegant, das ist durchaus ausbaufähig! ;-)
Gruß Matthias
Anzeige
AW: userform schliessen
29.07.2005 08:49:00
Frederik
Noch eine Idee:
Belege mit Application.onkey... eine Tastenkomination mit einer Public - Variable true/ false.
Frage dann später nach dem Wert der Public-Variable:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
if masteruser = true then exit sub
End Sub

AW: userform schliessen
29.07.2005 09:08:33
Klaus
Hallo Frederik + Mathias
nochmals Dank für Eure Hife. Aber: Ich habe keine Ahnung, wie ich Frediriks Voschlag umsetzten soll. Kannst du mir bitte in einem Beispiel zeigen, wie der komplette Cod aussehen soll?
Gruss Klaus
AW: userform schliessen
29.07.2005 09:15:29
Frederik
Hallo!
gehe in den VBA-Modus, schreibe Application.onkey
markiere den text und drücke f1, so kommst du in die hilfe.
die ist in diesem fall sehr gut beschrieben mit beispielen und so.
Schreibe diesen Code unter "MeineArbeitsmappe"

Private Sub Workbook_Open()
MasterUser = False
End Sub

(damit die Variable Standardmäßig auf false sitzt)
Gruß
F.
Anzeige
AW: userform schliessen
29.07.2005 09:34:22
Klaus
hallo Frederik
Häää? begreife das überhaupt nicht. Was ist oder wo ist "MeineArbeitsmappe".
Habe bis jetzt diesen Code für "Strg+e" in "DieseArbeitsmappe" eingefügt:
Application.OnKey "^{e}",
wie gehts jetzt weiter? Kannst du mir nicht den kompletten Code geben?
Gruss Klaus
AW: userform schliessen
29.07.2005 09:45:59
Frederik
Hallo!
"MeineArbeitsmappe" findest im VBA-Fenster auf der linken Seite (wo die Module stehen).
Doppeltklick darauf und folgenden Code einfügen:
Public MasterUser

Private Sub Workbook_Open()
MasterUser = False
Application.OnKey "^{e}",
End Sub

Das bewirkt, dass die vairable beim öffnen der datei "false" ist.
beim drücken der Tastenkombination Strg+e wird die variable "true".
Dein anderer Code muss dann so aussehen:

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
if MasterUser = true then
MasterUser = false
exit sub
end if
If CloseMode = 0 Then
Cancel = 1
MsgBox "Bitte verlassen Sie das Dialogfeld mit den Schaltflächen.", _
vbOKOnly + vbInformation, "Bitte Schaltfläche betätigen."
End If
End Sub

Gruß
F.
Anzeige
Nachtrag
29.07.2005 09:52:37
Frederik
Sorry, habe was vergessen:
Muss so aussehen:
in ein allegemeines Modul:
Public MasterUser
Function variable_aendern()
masteruser = True
End Function
unter diese Arbeitsmappe

Private Sub Workbook_Open()
MasterUser = False
Application.OnKey "^{e}", "variable_aendern"
End Sub

AW: userform schliessen
29.07.2005 10:02:47
Klaus
Hallo Frederik
jetzt wirds mir langsam peinlich, aber es funktioniert nicht:

Private Sub Workbook_Open()
MasterUser = False
Application.OnKey "^{e}",
End Sub

da musste ich hinter Application.OnKey "^{e}", das Komma wegnehmen.
aber es funktioniert trotzdem nicht. habe ich dich richtig verstanden, dass wenn ich die Tastenkombination Strg+e drücke, ich das Kreuz wieder benutzen kann?
Gruss Klaus
Anzeige
AW: userform schliessen
29.07.2005 10:21:15
Klaus
Hallo Frederik
Nach deinem Nachtrag funktioniert es zwar, aber nur, wenn ich ganz am Anfang die Tastenkombination drücke. ich möchte es aber so, das wenn die Userform bereits aufgerufen ist, ich mit einer Tastenkombinatin das Kreuz wieder aktivieren, oder die Userform schliessen kann.
Gruss Klaus
AW: userform schliessen
29.07.2005 10:44:04
Frederik
hmm, da habe ich jetzt keine Idee mehr!
AW: userform schliessen
29.07.2005 10:44:10
Frederik
hmm, da habe ich jetzt keine Idee mehr!
AW: userform schliessen
29.07.2005 11:12:15
Klaus
Hallo Frederik
Erstmal noch vielen Dank für deine grosse Hilfe. Habe jetzt aber eine Lösung gefunden, die zwar unschön, aber effektiv ist: ctrl+break. Das unterbricht das Makro und geht auch gleich in die Entwicklungsumgebung. Da kann ich es dann beenden.
Gruss Klaus
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige