Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Wert aus Formular/Textfeld als Variable übergeben

Forumthread: Wert aus Formular/Textfeld als Variable übergeben

Wert aus Formular/Textfeld als Variable übergeben
21.09.2004 15:42:45
Axel
Hallo Forum,
ich habe ein kleines Formular erstellt mit einem Textfeld und einer Befehlsschaltfläche.
Mit diesem Formular habe ich folgendes vor:
Aus einem Makro Sub Makro1() rufe ich das Formular mit formular.show auf.
Dann soll eine kleine Info in das Textfeld eingegeben werden, die in keiner Zelle auf den Tabellenblättern erscheinen soll. Worksheets("Tabelle1").Range("A1").Value = 1 will also ich vermeiden.
Wie schaffe ich es, dass nach Drücken der Befehlsschaltfläche die Info aus Textfeld im Makro zur Verfügung steht, wenn das Formular mit formular.hide wieder ausgeblendet wird?
LG, Axel
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wert aus Formular/Textfeld als Variable übergeben
21.09.2004 16:01:22
Kiwimusic
Hi Axel!
Im einem Allgemeinen Modul: Modul1 deklariest du eine Globale Variable (Ganz oben im Modul)
Global Var1 as String ( oder...long oder so...was es eben ist)
In dem Modul steht auch das Makro zum aufrufen des Formulars:
Sub Makro1()
UserForm1.Show
End Sub
In dem Private Modul für das Formular sieht es dann so aus:

Private Sub UserForm1_Initialize()
TextBox1.Text="" ' Das leert das Textfeld
TextBox1.SetFocus 'Das Wählt das Textfeld gleich als aktiviert
End Sub


Private Sub CommabButton1_Click()
Var1=TextBox1.Value '(oder .Text etc...was es eben ist. - Die Variable Var1 wird jetzt mit dem Wert aus der Textbox gefüllt)
TextBox1.Text="" ' Das leert das Textfeld wieder
End Sub

Die Variable Var1 behält den Wert jetzt solange du Ihn durch eine Neuangabe veränderst zur Laufzeit deiner Datei. Nach Schließen der Datei wird sie wieder auf "0" gesetzt.
Willst du dir sie irgendwo merken, mach ein Tabellenblatt (z.B. "Util") und schreibe sie dort auf. Das Tabellenblatt kanst du auch verstecken (Format > Blatt ausblendden). Das Macht nichts. Der Wert wird sich dort gemerkt, bis zur nächsten Änderung.
Du müsstest dafür diese Funktion das CommandButton1 - Makro um diese Zeile erweitern...:
Sheets("Util").Cells(1,1).value = Var1
:-)
Hoffentlich hilft's dir :-)
Kiwi
Anzeige
AW: Wert aus Formular/Textfeld als Variable übergeben
21.09.2004 16:43:47
Axel
Danke Kiwi!
Der Tipp mit Global war der Knackpunkt! Sieht gut aus...
BTW, da ich mir Var1 nicht merken muss, brauch ich auch "Util" nicht.
;
Anzeige
Anzeige

Infobox / Tutorial

Wert aus Formular/Textfeld als Variable übergeben


Schritt-für-Schritt-Anleitung

  1. Globale Variable deklarieren: Öffne dein VBA-Modul und deklariere eine globale Variable ganz oben im Modul. Zum Beispiel:

    Global Var1 As String
  2. Makro zum Aufrufen des Formulars erstellen: Füge das folgende Makro in dein Modul ein:

    Sub Makro1()
       UserForm1.Show
    End Sub
  3. UserForm initialisieren: Im Private Modul für das Formular füge den folgenden Code ein, um das Textfeld zu leeren und den Fokus darauf zu setzen:

    Private Sub UserForm1_Initialize()
       TextBox1.Text = "" ' Das leert das Textfeld
       TextBox1.SetFocus ' Das wählt das Textfeld gleich als aktiviert
    End Sub
  4. Wert aus dem Textfeld übernehmen: Füge im Private Modul für das Formular den folgenden Code hinzu, um den Wert aus dem Textfeld in die Variable zu speichern:

    Private Sub CommandButton1_Click()
       Var1 = TextBox1.Value ' Die Variable Var1 wird jetzt mit dem Wert aus der Textbox gefüllt
       TextBox1.Text = "" ' Das leert das Textfeld wieder
    End Sub
  5. Wert speichern (optional): Wenn du den Wert von Var1 über den Laufzeit der Datei hinaus speichern möchtest, kannst du ihn in einem Tabellenblatt ablegen:

    Sheets("Util").Cells(1, 1).Value = Var1

Häufige Fehler und Lösungen

  • Fehler: Variable wird nicht erkannt
    Stelle sicher, dass die globale Variable im richtigen Modul deklariert ist. Sie muss im gleichen Modul deklariert werden, wo das Makro aufgerufen wird.

  • Fehler: Textfeld bleibt leer
    Überprüfe, ob der Button-Klick-Ereignis korrekt verknüpft ist. Der Code zum Übertragen des Wertes muss im CommandButton1_Click-Ereignis stehen.


Alternative Methoden

Wenn du eine andere Methode zur Übertragung von Werten aus einem ungebundenen Textfeld in eine Variable in Excel verwenden möchtest, kannst du auch VBA-Formulare ohne globale Variablen verwenden. Stattdessen kannst du die Werte direkt in ein verstecktes Tabellenblatt speichern oder sie temporär in einer lokalen Variablen halten, die im selben Makro verwendet wird.


Praktische Beispiele

Angenommen, du möchtest einen Namen aus einem Textfeld in einer UserForm speichern und später verwenden:

  1. Deklariere die globale Variable Global NameVar As String.
  2. In CommandButton1_Click():
    NameVar = TextBox1.Value

Du kannst dann NameVar in anderen Makros verwenden.


Tipps für Profis

  • Wenn du Access verwendest, kannst du ähnliche Prinzipien anwenden, um Werte aus ungebundenen Textfeldern zuzuweisen. Das Vorgehen ist ähnlich, aber du solltest sicherstellen, dass du die spezifischen Eigenschaften und Methoden von Access kennst.
  • Denke daran, beim Verwenden von Variablen den Typ der Variablen sorgfältig auszuwählen (String, Long, etc.), um optimale Leistung und Speichermanagement zu gewährleisten.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass der Wert nach dem Schließen des Formulars nicht verloren geht?
Du kannst den Wert in einem versteckten Tabellenblatt speichern, wie im Abschnitt "Wert speichern (optional)" beschrieben.

2. Ist es möglich, Werte zwischen verschiedenen Formularen zu teilen?
Ja, indem du globale Variablen verwendest, kannst du Werte zwischen verschiedenen Formularen in deinem Excel-Projekt teilen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige