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

Werte aus Userform in modul übergeben

Forumthread: Werte aus Userform in modul übergeben

Werte aus Userform in modul übergeben
30.08.2017 14:05:28
Jens
hallo,
hier ein Auszug aus meinen Modul:
If Cells(i, 4).Value = "KR" Then
If Worksheets("Aufstellung").Cells(i, 30).Value = "" Then
Worksheets("Aufstellung").Cells(i, 35).Value = ""
Worksheets("Aufstellung").Cells(i, 36).Value = ""
GoTo sprungmarke
Else
If Worksheets("Aufstellung").Cells(i, 31).Value = "x" And Worksheets("Aufstellung").Cells(i, 33).Value = "x" Then
a = CDbl(Worksheets("Aufstellung").Cells(i, 6).Value) + 2 * CDbl(Worksheets("Aufstellung").Cells(i, 30).Value) + 2 * u
b = CDbl(Worksheets("Aufstellung").Cells(i, 7).Value) + 2 * CDbl(Worksheets("Aufstellung").Cells(i, 30).Value) + 2 * u
c_m = CDbl(Worksheets("Aufstellung").Cells(i, 8).Value) + 2 * CDbl(Worksheets("Aufstellung").Cells(i, 30).Value) + 2 * u
d = CDbl(Worksheets("Aufstellung").Cells(i, 9).Value) + 2 * CDbl(Worksheets("Aufstellung").Cells(i, 30).Value) + 2 * u
e = CDbl(Worksheets("Aufstellung").Cells(i, 9).Value) + 2 * CDbl(Worksheets("Aufstellung").Cells(i, 30).Value) + 2 * u
f_h = CDbl(Worksheets("Aufstellung").Cells(i, 11).Value) + 2 * CDbl(Worksheets("Aufstellung").Cells(i, 30).Value) + 2 * u
g_l = CDbl(Worksheets("Aufstellung").Cells(i, 12).Value)
UserForm7.Show
Else
a = CDbl(Worksheets("Aufstellung").Cells(i, 6).Value) + 2 * CDbl(Worksheets("Aufstellung").Cells(i, 30).Value)
b = CDbl(Worksheets("Aufstellung").Cells(i, 7).Value) + 2 * CDbl(Worksheets("Aufstellung").Cells(i, 30).Value)
c_m = CDbl(Worksheets("Aufstellung").Cells(i, 8).Value)
d = CDbl(Worksheets("Aufstellung").Cells(i, 9).Value) + 2 * CDbl(Worksheets("Aufstellung").Cells(i, 30).Value)
e = CDbl(Worksheets("Aufstellung").Cells(i, 9).Value) + 2 * CDbl(Worksheets("Aufstellung").Cells(i, 30).Value)
f_h = CDbl(Worksheets("Aufstellung").Cells(i, 11).Value) + 2 * CDbl(Worksheets("Aufstellung").Cells(i, 30).Value)
g_l = CDbl(Worksheets("Aufstellung").Cells(i, 12).Value)
UserForm7.Show
End If
End If
'durchgehenes Teil
If (b) >= (d) Then
KR1_D = 2 * (a + b) / 1000 * g_l / 1000
Else
KR1_D = 2 * (a + d) / 1000 * g_l / 1000
End If
'abzweigendes Teil 1
If Abs(f_h - y2 - d) >= Abs(y1) Then
KR1_A1 = (f_h - y2 - d) / 1000 * (2 * (e + a)) / 1000
Else
KR1_A1 = y1 / 1000 * (2 * (e + a)) / 1000
End If
'abzweigendes Teil 2
If Abs(f_h - y1 - b) >= Abs(y2) Then
KR1_A2 = (f_h - y1 - b) / 1000 * (2 * (c + a)) / 1000
Else
KR1_A2 = y2 / 1000 * (2 * (c + a)) / 1000
End If
KR1 = KR1_D + KR1_A1 + KR1_A2
'durchgehenes Teil
If (c) >= (e) Then
KR2_D = 2 * (a + c) / 1000 * f_h / 1000
Else
KR1_D = 2 * (a + e) / 1000 * f_h / 1000
End If
'abzweigendes Teil 1
If Abs(g_l - x2 - c) >= Abs(x1) Then
KR2_A1 = (g_l - x2 - c) / 1000 * (2 * (b + a)) / 1000
Else
KR2_A1 = x1 / 1000 * (2 * (b + a)) / 1000
End If
'abzweigendes Teil 2
If Abs(g_l - x1 - e) >= Abs(x2) Then
KR2_A2 = (g_l - x1 - e) / 1000 * (2 * (d + a)) / 1000
Else
KR2_A2 = x2 / 1000 * (2 * (d + a)) / 1000
End If
KR2 = KR2_D + KR2_A1 + KR2_A2
KR = Application.Max(KR1, KR2)
Cells(i, 36).Value = WorksheetFunction.Round(KR, 2)
Else
'ENDE "KR"
In der Useform steht noch der Code.
Private Sub Eingaben_Click()
Dim y1 As Double
Dim y2 As Double
Dim x1 As Double
Dim x2 As Double
x1 = Koordinate_x1.Value
x2 = Koordinate_x2.Value
y1 = Koordinate_y1.Value
y2 = Koordinate_y2.Value
Unload UserForm7
End Sub
Wie schaffe ich es nun, dass die Werte x und y, die ich in der Userform eingebe dem Modul zugeordnet werden und vorallen, dass die Werte in den Textboxen der Userform gespeichert werden, bis natürlich wieder ein neuer Wert eingegeben wird und Bestätigt?
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte aus Userform in modul übergeben
30.08.2017 15:13:23
yummi
Hallo Jens,
Daten in die Userform rein bekommst Du mit z.B.:
me.textbox1.text = ThisWorkbook.Sheets("Tabelle1").cells(1,1).value 'von A1 nach Textbox1
und raus aus der Userform (code noch innerhalb der Userform z.b. beim Button ok )
ThisWorkbook.Sheets("Tabelle1").cells(1,1).value = me.textbox1.text
oder wenn du es in eine Variable schreiben willst, muss diese als global definiert sein.
in irgendeinem Modul
Public MeineVar as String
dann kannst Du in der Userform beim Button ok schreiben
meineVar = Me.textbox1.text
Gruß
yummi
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Werte aus Userform in Modul übergeben


Schritt-für-Schritt-Anleitung

Um Werte aus einer Userform in ein Excel-Modul zu übergeben, kannst Du die folgenden Schritte befolgen:

  1. Erstelle die Userform: Füge eine Userform in deinem Excel-Projekt ein und füge die benötigten Textboxen hinzu, z. B. Textbox1, Textbox2 für die Werte x1, x2, y1, und y2.

  2. Verknüpfe die Userform mit dem Modul: In Deinem Modul kannst Du die Werte von der Userform direkt abrufen. Ein Beispiel dafür ist:

    Private Sub Eingaben_Click()
       Dim y1 As Double
       Dim y2 As Double
       Dim x1 As Double
       Dim x2 As Double
       x1 = Koordinate_x1.Value
       x2 = Koordinate_x2.Value
       y1 = Koordinate_y1.Value
       y2 = Koordinate_y2.Value
       Unload UserForm7
    End Sub
  3. Werte speichern: Um sicherzustellen, dass die Werte in den Textboxen der Userform bis zur nächsten Eingabe gespeichert werden, kannst Du diese Werte in einer globalen Variablen speichern. Definiere die Variable in einem Modul:

    Public MeineVar As String

    Und verwende sie in der Userform:

    Private Sub Eingaben_Click()
       MeineVar = Me.textbox1.Text
    End Sub
  4. Daten in die Userform laden: Um Werte aus einer Excel-Tabelle in die Userform zu laden, kannst Du dies wie folgt tun:

    Me.textbox1.Text = ThisWorkbook.Sheets("Tabelle1").Cells(1, 1).Value ' von A1 nach Textbox1

Häufige Fehler und Lösungen

  • Fehler 1: Userform zeigt keine Werte an.

    • Lösung: Stelle sicher, dass Du die Werte korrekt in die Textboxen lädst. Nutze Me.textbox1.Text = ... um die Werte zu setzen.
  • Fehler 2: Fehler beim Übergeben der Werte.

    • Lösung: Überprüfe, ob Du die Variablen richtig deklariert hast und sie im richtigen Kontext verwendet werden.

Alternative Methoden

Eine alternative Methode zur Übergabe von Werten aus einer Userform ist die Verwendung von Array-Variablen. Du kannst alle Werte in ein Array speichern und dieses Array dann im Modul verarbeiten.

Dim Werte(1 To 4) As Double
Werte(1) = Me.textbox1.Text
Werte(2) = Me.textbox2.Text
' und so weiter...

Praktische Beispiele

  1. Beispiel zur Übergabe von Werten:

    Private Sub Eingaben_Click()
       Dim y1 As Double
       Dim y2 As Double
       y1 = Me.textbox_y1.Text
       y2 = Me.textbox_y2.Text
       ThisWorkbook.Sheets("Tabelle1").Cells(1, 1).Value = y1
       ThisWorkbook.Sheets("Tabelle1").Cells(1, 2).Value = y2
    End Sub
  2. Beispiel zum Laden von Werten:

    Private Sub UserForm_Initialize()
       Me.textbox1.Text = ThisWorkbook.Sheets("Tabelle1").Cells(1, 1).Value
    End Sub

Tipps für Profis

  • Nutze Global-Variablen, um Werte zwischen verschiedenen Modulen oder Userforms zu teilen.
  • Verwende Application.WorksheetFunction für komplexe Berechnungen innerhalb Deiner Module.
  • Halte Deinen Code modular und gut dokumentiert, um spätere Anpassungen zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich die Userform automatisch mit Werten füllen? Verwende die UserForm_Initialize-Methode, um beim Öffnen der Userform Werte aus einer Tabelle zu laden.

2. Wie speichere ich Eingaben, ohne die Userform zu schließen? Du kannst die Werte in globalen Variablen speichern, sodass sie auch nach dem Schließen der Userform verfügbar bleiben.

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