Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Variable aus Userform übernehmen

Forumthread: Variable aus Userform übernehmen

Variable aus Userform übernehmen
11.01.2022 14:49:06
Fragender2022
Hallo zusammen,
Ratlosigkeit umfängt mich....
Ich versuche in einer Excel-Tabelle mittels VBA aus einem Userform heraus Variablen zu übergeben, aber es will einfach nicht gelingen.
Im Tabellenblatt rufe ich das Userform folgendermaßen auf:
Tabellenblatt1
Option Explicit
Public Auftragsnummer As String, Positionen As Integer
Sub UserFormTest()
UserForm1.Show
MsgBox "Auftragsnummer: " & Auftragsnummer & " Positionen: " & Positionen
End Sub

Dort sollen die beiden Variablen "Auftragsnummer" und "Positionen" eingegeben und dann an das Tabellenblatt weitergegeben werden. Das versuche ich mit dem Code
UserForm1
Option Explicit
Public Auftragsnummer As String, Positionen As Integer

Private Sub CommandButton_Cancel_Click()
Unload UserForm1
End Sub

Private Sub CommandButton_Take_Click()
Auftragsnummer = Text_Auftragsnummer.Value
Positionen = Text_Positionen.Value
MsgBox "Auftragsnummer: " & Auftragsnummer & "        Positionen: " & Positionen
Unload UserForm1
End Sub

Über den Button "Take" sollen die Werte an das Tabellenblatt übergeben werden. Im Userform-Modul sind die Werte auch noch vorhanden (..siehe die dortige MsgBox...), im Tabellenblatt jedoch nicht mehr. Kann mir jemand sagen, was ich falsch mache?
Vielen Dank und viele Grüße
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable aus Userform übernehmen
11.01.2022 15:00:08
Oberschlumpf
Hi,
du musst auch die Befehle eintragen, die die Werte aus den Variablen, oder ohne diesen Umweg, direkt aus den txt-Boxen in die Tabelle übertragen.
Versuch mal
Mach aus...

Private Sub CommandButton_Take_Click()
Auftragsnummer = Text_Auftragsnummer.Value
Positionen = Text_Positionen.Value
MsgBox "Auftragsnummer: " & Auftragsnummer & "        Positionen: " & Positionen
Unload UserForm1
End Sub
...das hier...

Private Sub CommandButton_Take_Click()
Auftragsnummer = Text_Auftragsnummer.Value
Positionen = Text_Positionen.Value
MsgBox "Auftragsnummer: " & Auftragsnummer & "        Positionen: " & Positionen
Tabelle1.Range("A1").Value = Text_Auftragsnummer.Value
Tabelle1.Range("A2").Value = Text_Positionen.Value
Unload UserForm1
End Sub
In meinem Bsp werden die Inhalte der txt-Boxen in Tabelle1 in die Zellen A1 + A2 eingetragen - wenn du andere Zielzellen meinst, dann musst du A1 + A2 korrigieren.
Hilfts?
Wenn nein, zeig bitte per Upload eine Excel-Bsp-Datei und beshcreib, in welche Zellen die txt-Box-Inhalte eingetragen werden sollen.
Ciao
Thorsten
Anzeige
AW: Variable aus Userform übernehmen
11.01.2022 17:08:43
Fragender2022
Hallo Thorsten,
zunächst vielen Dank für deine Antwort!
Der Vorschlag funktioniert zwar grundsätzlich, aber ich benötige eigentlich die Variablenwerte, um sie im Tabellenblatt weiterzubearbeiten, nicht aber als eigenen Zelleninhalt. Es kommen auch noch einige Variablen hinzu, die ich nur der Einfachheit halber im Beispiel weggelassen habe.
Zwar könnte ich vermutlich die Einträge aus den Textfeldern sozusagen im Tabellenblatt „zwischenparken“, dann aus den Zellen auslesen und die Zellen danach löschen. Aber gibt es wirklich in VBA keine andere Möglichkeit?
Eine Beispieldatei hatte ich bei dem ersten Post bereits hochgeladen und auch eine „Erfolgsmeldung“ dazu erhalten, hatte aber den Linktext nicht kopiert. Anbei der zweite Versuch....
https://www.herber.de/bbs/user/150333.xlsm
Vielen Dank jedenfalls schon mal für deine Hilfe!!
Anzeige
AW: Variable aus Userform übernehmen
11.01.2022 18:08:51
Yal
Hallo Fragender,
die Definition der Variablen "Auftragsnummer" und "Positionen" müssen
_ nur einmal,
_ nur in einem Modul,
_ als "Public" (war's ja schon)
stattfinden
Nur so werden Sie sowohl vom Userform und vom Blatt erkannt.
Eine dopplete Definition erzeugt separate, lokale Variablen, auch wenn "public"
Ein Vorschlag für eine Msgbox-Text:

MsgBox "Auftragsnummer: " & vbTab & Auftragsnummer & vbCr & "Positionen: " & vbTab & Positionen
Auf einer Rückmeldung freuen wir uns immer.
VG
Yal
Anzeige
AW: Variable aus Userform übernehmen
11.01.2022 18:52:45
Fragender2022
Hallo Yal,
Hallo,
vielen Dank für die Antwort.
Genau das funktioniert aber bei mir nicht.
Wenn ich die Variablen in Tabellenblatt 1 vor der „Sub UserFormTest()“ (..mit der ich das Userform aufrufe..) definiere, lautet nach Eingabe der Werte im Userform und Klicken des „Übernehmen-Buttons“ die Fehlermeldung: „Variable nicht definiert“ (..Debugger hält dabei im Userform-Modul an..).
Definiere ich die Variablen innerhalb der "Sub UserFormTest"(), erhalte ich die Meldung: „Ungültiges Attribut in Sub oder Function“ (..noch vor dem Öffnen des Userform…).
Definiere ich erst im Userform-Modul (egal ob noch vor oder erst innerhalb der Sub des "Übernehmen-Buttons"..), erhalte ich ebenfalls noch vor Öffnen des Userform die Meldung : „Variable nicht definiert“.
Ich habe keine Idee mehr, wo die Variablendefinition sonst hingehören könnte...
Anzeige
AW: Variable aus Userform übernehmen
11.01.2022 20:06:03
ralf_b
da hilft nur "zeigen"!
alternativ liest du dich evtl. in die Vba basics zu Variablengültigkeit ein.
AW: Variable aus Userform übernehmen
11.01.2022 21:03:38
Fragender2022
Hallo ralf_b,
falls "da hilft nur zeigen" ein "maskierter" Hinweis ist, habe ich den nicht verstanden...
In die Variablengültigkeit dachte ich, mich eingelesen zu haben. Wenn ich alles verstanden hätte, was ich gelesen habe, hätte ich (..vermutlich jedenfalls..) auch nicht fragen müssen. So aber scheint mein Problem ungelöst zu bleiben.
Danke jedenfalls an alle, die eine Hilfestellung versucht haben!
Anzeige
AW: Variable aus Userform übernehmen
11.01.2022 21:10:42
ralf_b
zeige den Code, der angeblich nicht funktioniert. Deine Angaben, was du wohin programmiert hast, sind nicht so ganz klar nachzuvollziehen.
Deine Unsicherheiten bzgl. der gelesene Gültigkeitsregeln, könnte auch auf die Formulierungen zutreffen, mit denen du den Code beschrieben hast. Is völlig normal. VBA ist eben auch nur eine Fremdsprache.
Anzeige
AW: Variable aus Userform übernehmen
11.01.2022 21:47:40
Fragender2022
Hallo ralf_b,
den Code habe ich aber doch schon im ersten Post geschrieben, die Beispieldatei dann im zweiten...Was nicht funktioniert, ist, die Variablen, deren Werte im Userform eingegeben werden, im Tabellenblatt1 weiterverwenden zu können.
AW: Variable aus Userform übernehmen
11.01.2022 22:50:11
ralf_b
ok ,dann rate ich eben ein bissel. Ich ging davon aus das du etwas geändert hattest zwischenzeitlich.
lösche die Deklarationen aus Tabelle1 und Userform und erstelle ein allgemeines Modul. Dort platzierst du die Deklaration deiner Variablen.
Anzeige
AW: Variable aus Userform übernehmen
11.01.2022 22:51:25
Yal
Hallo Fragender (Vorname wäre schöner ;-),
ja, es ist alles geliefert worden, da hat Ralf etwas übersehen.
Eigentlich war alles in meiner Antwort, aber vielleicht nicht genug detailliert.
Die Definition der Variablen gehört in einem Modul: Einfügen, Modul. Ich gehe davon aus, dein Projekt-Explorer ist offen (Ansicht, Projekt-Explorer). Wenn Du einen Modul einfügst, siehst Du dort sofort was sich ändert

Public Auftragsnummer As String
Public Positionen As String
In deiner Userform und im Blatt-Codepane werden diese Variablen nur verwendet. Es gibt nie eine doppelte Deklaration von Variable. Es erzeugte dann lokale Variablen.
Es liegt daran, dass ein Blatt oder ein Userform Objekte sind: die Variable gehören das Objekt selbst und müssen anhand des Objekts abgefragt. Zum Beispiel der Name von Tabelle1 wird mit "Tabelle1.Name" abgefragt werden. Nur "Name" bringt nur innerhalb von Tabelle1 etwas. Tabelle2 auch einen Name hat: Tabelle2.Name, daher versteht Tabelle1 unter "Name" (ohne Qualifier) nur sein eigenen Namen. Mit Tabelle2.Name versteht der Code innerhalb von Tabelle1, dass es sich um den Name von Tabelle2 handelt (geht auch nur weil "Name" public ist).
Eigentlich könntest Du die Variablen in Userform1 deklarieren und diese so abfragen:

Sub UserFormTest()
Userform1.Show
MsgBox "Auftragsnummer: " & Userform1.Auftragsnummer & " Positionen: " & Userform1.Positionen
End Sub
Leider wird am Ende von "Show" die Userform1 "entladen", spricht das Objekt "Userform1" ist nicht mehr erreichbar.
Siehe auch https://www.herber.de/vbabasics/0007.html
VG
Yal
Anzeige
AW: Variable aus Userform übernehmen
12.01.2022 00:48:08
Fragender2022
Hallo zusammen,
bitte um Entschuldigung für die späte Antwort, aber ich musste um 22:00 die Heimreise antreten und habe jetzt erst wieder einen PC am Start.
DAS WAR ES!!!
Wie YAL es beschrieben hat und wie es im Beispiel von Gerd zu sehen ist, funktioniert es, wenn die Deklaration der Variablen in einem eigenen Modul erfolgt. Ich wäre im Leben nicht darauf gekommen, dass das einen Unterschied macht! Trotz insgesamt mehrerer Stunden Recherche habe ich auch nirgendwo sonst einen Hinweis darauf gesehen (...jedenfalls nicht bewusst...),
Yal´s Beschreibung hat mir zudem auch die Zusammenhänge einigermaßen klar gemacht. Das ist neben dem Umstand, dass der Code jetzt endlich funktioniert, ebenfalls eine tolle Sache!
Nochmal: Vielen, vielen Dank allen für die Hilfe!
Anzeige
;

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