Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema CheckBox
BildScreenshot zu CheckBox CheckBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Variablen von UserForm an Modul übergeben | Herbers Excel-Forum


Betrifft: Variablen von UserForm an Modul übergeben von: Moritz
Geschrieben am: 07.12.2009 11:28:57

Hallo,

wie lässt sich die Übergabe von Variablen von einem UserForm an ein Modul darstellen?

Ich habe ein UserForm mit 7 Felder, in denen Zahlen eingegeben werden. Mit dem Klickt auf den Button sollen die 7 Zahlen weiterverwendet werden in einem Modul. Mein aktueller Code für den Button sieht wie folgt aus:

Public Sub CommandButton1_Click()
    liqsum = liq1.Value * 1 + liq2.Value * 1 + liq3.Value * 1 + liq4.Value * 1
    altsum = alt1.Value * 1 + alt2.Value * 1 + alt3.Value * 1
    Unload Me
End Sub

Sehr stark gekürzt sieht das Modul so aus:

Option Explicit
Dim tabellenblattauf, tabellenblatt, tabellenblattout, ... As String
Dim liq1, liq2, liq3, liq4, liqsum, alt1, alt2, alt3, altsum, ... As Integer

Sub aufbereiten()
tabellenblatt = "Input"
tabellenblattout = "Output"
tabellenblattauf = "Aufbereitet"

...

Load UserForm1
UserForm1.Show

...

liq = liq + liqsum
alt= alt + altsum

...
End Sub
Das Modul läuft richtig durch und zieht sich auch alle Daten nur nicht die Datem aus dem UserForm. Hat jemand eine Idee, wie ich da die Variablen richtig übergeben muss?

Vielen Dank und viele Grüße

Moe

  

Betrifft: mit Public deklarieren von: Matthias L
Geschrieben am: 07.12.2009 11:43:54

Hallo

Deklariere gleich die Variablen als Public in einem Modul

 Option Explicit
 Public liq1 As Integer
 Public liq2 As Integer
 Public liq3 As Integer
 Public liq4 As Integer
 Public liqsum As Integer

usw ...

Dann stehen diie Variablen allen Prozeduren zur Verfügung

Gruß Matthias


  

Betrifft: Bei leerem Feld automatisch 0 setzen von: Moritz
Geschrieben am: 07.12.2009 12:07:33

Hey Matthias,

so einfach kann es sein =). Vielen Dank es funktioniert gut.

Hast Du oder jemand anders vielleicht noch ein Idee, wie ich den UserForm Code erweitern muss, wenn in den einzelnen Feldern nichts eingetragen wird, dass dann dort automatisch eine 0 der Variable zugeordnet wird oder bereits 0 in dem Textfeld steht.

Viele Grüße

Moe


  

Betrifft: AW: Bei leerem Feld automatisch 0 setzen von: fcs
Geschrieben am: 07.12.2009 13:10:22

Hallo Moe,

du kannst im Userform 0 als Wert der Value-Eigenschaft der Textfelder vorgeben.

Ich führe bei nummerischen Werten in UF grundsätzlich eine Wertkonversion von Text nach Zahl durch.

If IsNumeric(TextboxXYZ.Value) then
 dblVariable = CDbl(TextboxXYZ.Value)
' oder
  Cells(Zeile,Spalte).Value = CDbl(TextboxXYZ.Value)
ElseIf TextboxXYZ.Value="" Then
 dblVariable = 0
'oder
 Cells(Zeile, Spalte).ClearContents
Else
 MsgBox "Eingabe für XYZ muss nummerisch sein"
 Exit Sub
End If
Gleiches gilt für Datumseingaben, die mit IsDate geprüft und CDate von Text in Datum konvertiert werden können.

Gruß
Franz


  

Betrifft: AW: Variablen von UserForm an Modul übergeben von: fcs
Geschrieben am: 07.12.2009 11:57:15

Hallo Moe,

Im allgemeinen Modul muss du die Variablen, die vom Userform mit Daten gefüllt werden sollen als Public deklarieren.

Alternativ kannst du das Userform auch mit Me.Hide zunächst nur ausblenden und erst anch Auswertung der UF-Inhalte aus dem Speicher entfernen.

'Userform Button-Prozedur
Public Sub CommandButton1_Click()
    Me.Hide
End Sub

'in der allgemeine Prozedur:

Load UserForm1
UserForm1.Show
With Userform1
    liqsum = .liq1.Value * 1 + .liq2.Value * 1 + .liq3.Value * 1 + .liq4.Value * 1
    altsum = .alt1.Value * 1 + .alt2.Value * 1 + .alt3.Value * 1
   Unload Userform1
End With
Gruß
Franz


Beiträge aus den Excel-Beispielen zum Thema "Variablen von UserForm an Modul übergeben"