Registriert seit: 08.10.2017
Version(en): 2017
02.02.2019, 17:20
(Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2019, 17:20 von Wexel.)
Hallo zusammen, schönen Samstag,
Ich hätte eine Frage bzgl. einer Userform Textbox.
-Am Anfang eines Moduls öffne ich Userform (Halle_Schlossboard) und schreibe in Textbox14 etwas hinein.
-Ich schließe das UF wieder
-..das Modul läuft weiter.
-am Ende möchte ich Textbox14 auslesen und in Sheet Schlösser, in Telle A1 darstellen.
dazu habe ich folgenden Befehl:
Sheets("Schlösser").Range("A1").Value = Halle_Schlossboard.TextBox14
klappt aber leider nicht. Muss ich evtl. mein UF vor dem schließen speichern oder wo liegt mein Fehler ?
Danke für eure Hilfe
Registriert seit: 05.09.2017
Version(en): 2013
Hallo,
hat es einen bestimmten Grund, weshalb du den Wert aus der Textbox erst am Ende des Markros in die Zelle schreiben willst?
Wenn du die Userform schlißet, dann ist auch der Wert aus der Textbox weg, wenn du ihn vor dem Schließen der Userform nicht z.B. in einer Variablen gespeichert hast.
Gruß Werner
Registriert seit: 24.10.2015
Version(en): 2010
Hallo,
wenn Du eine UF schließt, verlieren alle Elemente ihre Inhalte.
Du musst also vor dem Schließen gewünschte Inhalte in einer Variablen speichern.
Es gibt das Ereignis UserForm_QueryClose, das vor dem Schließen durchlaufen wird.
Also: Im Modul Public Merken as String
in QueryClose: Merken=me.Textbox14
Dann steht Merken im Modul zur Verfügung.
Gruß der AlteDresdner (Win11, Off2021)
Registriert seit: 08.10.2017
Version(en): 2017
@Werner, Ja, ich benötige die Textbox leider erst einige Schritte nach der Abfrage
@Dresdener
hatte ich schon vermutet, allerdings bisher 0 Erfahrung im speichern von Inhalten in einem UF
Danke Euch beiden
Registriert seit: 08.10.2017
Version(en): 2017
aber trotzdem kann ich mit deinem Vorschlag noch nicht wirklich etwas anfangen, heißt was genau muss ins UF, was in mein Modul..
Registriert seit: 25.04.2016
Version(en): 2013
02.02.2019, 19:00
(Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2019, 19:06 von Storax.)
In der Userform
Code:
Option Explicit
Dim m_Cancelled As Boolean
Private Sub UserForm_QueryClose(Cancel As Integer _
, CloseMode As Integer)
' Prevent the form being unloaded
If CloseMode = vbFormControlMenu Then Cancel = True
' Hide the Userform and set cancelled to true
Hide
m_Cancelled = True
End Sub
Property Get txtBox14() As String
txtBox14 = Me.TextBox14.Value
End Property
Und testen mit
Code:
Option Explicit
Sub TestHalle_Schlossboard()
Dim mySchloss As New Halle_Schlossboard
mySchloss.Show
' do sth
Debug.Print mySchloss.txtBox14
End Sub
Lesestoff
hier und
hier
Registriert seit: 12.03.2016
Version(en): Excel 2003/ 2016
Hallo
ich weiss nicht ob ich bei den Lösungen noch einen "simpel Vorschlag" anbringen darf. Ich tue es einfach mal .. (alias Marc Metzger)
Man kann in einem normalen Modul eine Variable mit Public deklarieren. Die gelten als Öffentlich und werden NICHT gelöscht! Es sei denn gezielt im Makro! Wenn man die TextBox 14 vor dem schliessen in die Variable einliest bleibt der Wert erhalten. Da gibt es auch den Code für UserForm_BeiAnklcken, oder jedes andere beliebige Ereignis wie der "Abbrechen" oder "Schliessen" Button. Auf diese Public Variable kann JEDES Makro, in jedem Modul zugreifen!
mfg Gast 123
Registriert seit: 12.03.2016
Version(en): Excel 2003/ 2016
Nachtrag für die Kollegen
als Programmierer der alten Schule habe ich Privat noch einen viel simpleren Trick auf Lager! Das alte Dialog Sheet aus Excel 7, 97, 2003
Das alte Dialog Sheet hatte den unbestreitbaren Vorteil das die Werte in Textfeldern erhalten blieben!! Das konnte man auch bei geschlossenem Dialog auslesen, oder den Wert von OptionBoxen und KontrollBoxen abfragen!! Probiert das mal mit UserForm. Die alte Technik war sicher nicht schlechter.
mfg Gast 123
PS Dieses Dialog Sheet ist Offiziell nicht mehr zugaenglich, ausser für alte Programmierer die den Trick kennen!
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo,
ich denke, Du meinst den Excel5-Dialog. Aber dass das ein Trick ist, per Rechtsklick auf ein Register den Einfügen-Dialog aufzurufen, wusste ich nicht.
Gruß Uwe
Registriert seit: 25.04.2016
Version(en): 2013
Globale Variable sollte man vermeiden, auch wenn
hier bei SO die Lösung vom OP genommen wurde, ist die
zweite IMHO zu bevorzugen.
Hier noch weiterer Lesestoff dazu.
Das alte Excel 5 Dialogsheet ist IMHO kein einfacher Trick, das ist nur noch aus Kompatibilitätsgründen da und ich würde das nicht mehr verwenden.