Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1668to1672
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

Abfrage zum Speichern Userform

Abfrage zum Speichern Userform
25.01.2019 22:36:04
Tobi
Hallo Zusammen,
ich habe in meiner UserForm 1 eine Sicherheitslücke entdeckt, die ich versuche zu schließen. Leider habe ich im Internet nichts passendes darüber gefunden.
Wenn ich in die Textboxen Daten eingebe und aus Versehen vor dem Speichern auf die Liste (UserForm 2) klicke, wurden die Daten natürlich nicht gespeichert.
Gibt es eine Möglichkeit, dass beim versehentlichen Klicken auf einen CommandButton eine Abfrage (MsgBox) erscheint und dadurch ein Klick, außer auf den Speichern Button, verhindert wird?
Vielleicht hat jemand eine Idee, den Link zur UserForm habe ich angehängt.
Liebe Grüße Tobi
https://www.herber.de/bbs/user/127154.xlsm

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Abfrage zum Speichern Userform
26.01.2019 00:58:59
Werni
Hallo Tobi
Anstatt Unload.me
schreibe Userform1.Hide
Gruss Werni
AW: Abfrage zum Speichern Userform
26.01.2019 02:29:29
Tobi
Hallo Werni,
danke für die Info aber so ganz verstehe ich nicht, wie dann das Problem gelöst sein sollte. Kannst Du mir vielleicht sagen, wo ich die Änderung vornehmen soll? Beim "CommandButton Beenden" hat diese Änderung nichts gebracht. Was genau soll denn Dein Vorschlag bewirken?
Dir vielen lieben Dank im Voraus !
Grüße Tobi :-)
AW: Abfrage zum Speichern Userform
26.01.2019 05:43:34
Werner
Hallo Tobi,
z.B. so:
1. im Codemodul von Userform1 deklarierst du eine Public Variable
Option Explicit
Option Compare Text
Public boGespeichert As Boolean

2. im Code von deinem Speichern-Button setzt du diese Variable auf True
Private Sub CommandButton3_Click()
'Eintrag speichern
Dim lzeile As Long, lIndex As Long
If ListBox1.ListIndex = -1 Then
lzeile = Tabelle1.Cells(Rows.Count, 5).End(xlUp).Row + 1
Else
lzeile = ListBox1.Column(1)
End If
lIndex = ListBox1.ListIndex
If Trim(TextBox2.Text) = "" Then
MsgBox "Feld Anrede muss gefüllt sein!", vbCritical + vbOKOnly, "FEHLER!"
'Abbrechen der Speicherroutine
Exit Sub
Else
boGespeichert = True
With Tabelle1
.Cells(lzeile, 1).Value = TextBox1.Text            'A Verwaltuns Nr.
.Cells(lzeile, 2).Value = TextBox2.Text  

3. im Liste-Button fragst du dann den Wert dieser Variablen ab
Private Sub UF1_Liste_Click()
If boGespeichert Then
Unload Me
'    Userform2.UF2_Lb1.ListCount
Call Userform2.UF2_Lb1_Zuweisen
Userform2.Show
Else
MsgBox "Achtung, Daten wurden noch nicht gespeichert."
End If
End Sub
Gruß Werner
Anzeige
AW: Abfrage zum Speichern Userform
26.01.2019 12:12:04
Tobi
Hallo Werni,
Du bist a Käpsele ! Das funktioniert einwandfrei. Ich danke Dir vielmals *Stein in Garten werf*
Liebe Grüße Tobi
AW: Abfrage zum Speichern Userform
26.01.2019 12:28:47
Tobi
Hallo Werni (Käpsele) :-)
wie bereits erwähnt, funktioniert das. Allerdings habe ich erst jetzt bemerkt, dass er beim Klick auf den Listen-Button grundsätzlich ein Speichern verlangt, auch bei bereits angelegten Datensätzen.
Die Meldung sollte nur in zwei Fällen erscheinen:
Beim Anlegen eines neuen Datensatzes und bei Ändern eines bestehenden Datensatzes.
Ist denn sowas überhaupt realisierbar?
AW: Abfrage zum Speichern Userform
26.01.2019 12:51:44
Tobi
Hallo Werner,
sorry, bei Werni und Werner scheint es sich nicht um die selbe Person zu handeln. Verzeihung für die falsche Anrede und danke bis dahin für Deine gute Arbeit, Werner. Vielleicht ist das von mir zuvor beschriebene Problem ja lösbar.
Liebe Grüße Tobi
Anzeige
AW: Abfrage zum Speichern Userform
26.01.2019 20:19:22
Werner
Hallo Tobi,
über den Button "Neu" ist das ja kein Problem. Dort einfach boGespeichert auf False setzen.
Private Sub CommandButton1_Click() 'Neu
boGespeichert = False
ClearFields
TextBox1.Text = Format(Tabelle2.Cells(2, 53) + 1, "000000")
ListBox1.ListIndex = -1
TextBox2.SetFocus
End Sub
Die Frage, ob Daten geändert wurden ist da nicht so einfach. Da müsste man ja sämtliche Eingabefelder der Userform auf Änderungen überwachen. Ich würde die Sache ganz anders angehen. Einfach generell bei Klick auf Liste überprüfen, ob boGespeichert = True, wenn ja wechsel in Userform2.
Wenn nein eine Messagebox mit entsprechendem Hinwei und Ok / Nein / Abbruch.
Klick auf Ok: Daten werden gespeichert und es wird in Userform2 gewechselt, boGespeichert wird auf False gesetzt.
Klick auf Nein: Es wird nicht gespeichert und es wird in Userform2 gewechselt.
Klick auf Abbruch: Messagebox wird geschlossen und es wird auf Userform1 verblieben.
Private Sub UF1_Liste_Click() 'Liste
Dim varAuswahl As Variant
If boGespeichert Then
Unload Me
Call Userform2.UF2_Lb1_Zuweisen
Userform2.Show
boGespeichert = False
Else
varAuswahl = MsgBox("Daten wurden noch nicht gespeichert." & vbLf _
& "Soll jetzt gespeichert werden.", vbYesNoCancel, "Hinweis")
If varAuswahl = vbYes Then
Call CommandButton3_Click
ElseIf varAuswahl = vbNo Then
Unload Me
Call Userform2.UF2_Lb1_Zuweisen
Userform2.Show
Else
Exit Sub
End If
End If
End Sub
Alle anderen Makros so lassen, nur die beiden austauschen. Schau dir das mal an.
Gruß Werner
Anzeige
was vergessen
26.01.2019 20:30:28
Werner
Hallo Tobi,
hatte beim anderen Code den Wechsel in Userform2 bei Klick auf Ok vergessen.
Private Sub UF1_Liste_Click() 'Liste
Dim varAuswahl As Variant
If boGespeichert Then
Unload Me
Call Userform2.UF2_Lb1_Zuweisen
Userform2.Show
boGespeichert = False
Else
varAuswahl = MsgBox("Daten wurden noch nicht gespeichert." & vbLf _
& "Soll jetzt gespeichert werden.", vbYesNoCancel, "Hinweis")
If varAuswahl = vbYes Then
Call CommandButton3_Click
Unload Me
Call Userform2.UF2_Lb1_Zuweisen
Userform2.Show
boGespeichert = False
ElseIf varAuswahl = vbNo Then
Unload Me
Call Userform2.UF2_Lb1_Zuweisen
Userform2.Show
Else
Exit Sub
End If
End If
End Sub
Gruß Werner
Anzeige
AW: was vergessen
26.01.2019 22:28:59
Tobi
Hallo Werner,
erstmal vielen Dank für Deine Ausarbeitung. Ich werde das alles mal so eingeben und testen und mich danach wieder melden. Bis dahin setze ich den Beitrag mal auf "nicht beantwortet".
Liebe Grüße Tobi
Code von Werner
27.01.2019 02:09:21
Werner
Hallo Werner,
ich habe Deinen Code geprüft. Wie Du auch bereits erwähnt hast, fragt er jetzt allerdings immer nach dem "Speichern" wenn ich bei einem vorhandenen Eintrag auf den "ListeButton" klicke. Auch wenn ich einen neuen Kontakt angelegt und gespeichert habe und dann auf den "ListeButton" klicke, fragt er nach dem "Speichern". Dein Code funktioniert somit, weil Du dieses Verhalten ja angekündigt hattest.
Ich denke aber, dass mir dieses Verhalten zu lästig ist und ich den Code lieber nicht verwenden werde. Ich danke Dir trotzdem für Deine tolle Ausarbeitung, ich wäre niemals so weit gekommen.
Trotzdem hatte ich eine Idee und hierzu würde mich Deine Meinung interessieren:
Ich habe überlegt was passiert, wenn ich den gesamten Code des "SpeicherButtons" zusätzlich in den Code des "ListeButtons" einfüge und siehe da, jetzt speichert es mir den Eintrag nicht nur bei Klick auf den "SpeicherButton" sondern auch mit Klick auf den "ListeButton".
Somit habe ich die Fehlerquelle, dass jemand einen Eintrag vornimmt, ohne zu speichern auf den "ListeButton" klickt und der Eintrag nicht gespeichert wurde, beseitigt.
Was hältst Du von dieser Gangart?
Anzeige
AW: Code von Werner
27.01.2019 17:42:46
Werner
Hallo Tobi,
wenn es dann so abläuft wie du dir das vorstellst, dann ist doch alles ok.
Gruß Werner
AW: Code von Werner
27.01.2019 19:28:05
Werner
Hallo Werner,
dann danke ich Dir für Deine super Hilfe.
Liebe Grüße Tobi
AW: Code von Werner
27.01.2019 19:28:25
Werner
Hallo Werner,
dann danke ich Dir für Deine super Hilfe.
Liebe Grüße Tobi
Gerne u. Danke für die Rückmeldung. o.w.T.
27.01.2019 19:30:33
Werner

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige