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
Informationen und Beispiele zum Thema TextBox
BildScreenshot zu TextBox TextBox-Seite mit Beispielarbeitsmappe aufrufen

Formate in Userform erzingen -> Übergabe an Makro | Herbers Excel-Forum


Betrifft: Formate in Userform erzingen -> Übergabe an Makro von: SvenS
Geschrieben am: 04.02.2010 17:59:48

Hallo in die Runde,

ich steh mal wieder vor einer größeren Herausforderung... (zumindest ist dies für mich eine)

Ich habe ein Makro geschrieben, welches mir eine Tabelle in ein bestimmtes Format bringt. Das funktioniert jetzt auch, dank dieses Forums... :-)

Unter anderem werden auch verschiedene Spaltensummen (Währung) berechnet.

Es sind nun aber noch zwei Eingaben durch den Benutzer gefordert, was ich mit einer UserForm ("Rabatt_Form") lösen möchte, welche ich bereits erstellt habe.

1. Eingabe der Projektbezeichnung in TextBox "Input_Proj_Name" (Kann alle Zeichen enthalten)
2. Eingabe des Rabattes in TextBox "Input_Rabatt_Abs" in Euro in Spalte K (unter der letzten Zelle mit 2 Zellen offset)
ODER
3. Eingabe des Rabattes in TextBox "Input_Rabatt_Proz" in % in Spalte K (unter der letzten Zelle mit 2 Zellen offset)

Die "Verriegelung" der Felder habe ich im UserForm mit

TextBox1.Visible = True
bzw.
TextBox1.Visible = False
realisiert. Es ist zum Zeitpunkt der Eingabe also nur jeweils eine der beiden Rabatt-TextBoxen sichtbar (siehe Bild). Wenn die Textbox "Input_Proj_Name" leer ist, fang ich das auch schon ab.

ABER:

Jetzt habe ich im Wesentlichen 2 Probleme:

1. Wie stelle ich sicher, dass bei beiden Rabattarten nur Zahlen mit 2 Dezimalstellen eingegeben werden können?
2. Wie übergebe ich dann von meiner UserForm die Werte der TextBoxen an das Makro (zur weiteren Verarbeitung in Formeln)?

Mein Plan:

Makro starten
--> Rabatt_Form.show
--> Eingaben annehmen (Hierbei die Eingabe der Zahlenformate mit 2 Dezimalstellen erzwingen)
--> Übergabe an das Makro (wahrscheinlich in Variablen)
--> Im Makro die Variablen zur weiteren Berechnung laden
--> Berechnungen durchführen
Fertig

Ich denke für nen echten Fachmann kein Thema, aber ich steh hier grad vor ner Wand...

Und wie immer: Danke im Voraus....

  

Betrifft: AW: Formate in Userform erzingen -> Übergabe an Makro von: SvenS
Geschrieben am: 04.02.2010 18:18:34

Hier noch die Dateien mit dem Formular, dem Makro, und einem Testfile, über welches das Makro laufen soll nur für den Fall, dass sich das jemand ansehen möchte...

Formular: https://www.herber.de/bbs/user/67767.xls

Makro: https://www.herber.de/bbs/user/67768.xls

Testfile: https://www.herber.de/bbs/user/67769.xls

Bitte nicht unken, ich weiß, dass der Code an der einen oder anderen Stelle amateurmäßig und unbeholfen ist, aber er erfüllt erstmal seinen Zweck.

Momentan sind im Makro noch Input-Boxen eingebaut, allerdings kann ich hier nicht auf das gewünschte Zahlenformat prüfen und dieses erzingen. Deshalb jetzt der Versuch mit der Userform...

Danke Euch für jeden Tip...


  

Betrifft: Vorschlag ... von: Matthias L
Geschrieben am: 04.02.2010 18:23:25

Hallo Sven

Das ist jetzt nicht ausgiebig getestet, aber evtl. hilft s Dir ja als Ansatz.
Zielzelle ist als Zahl mit 2 Dezimalstellen formatiert.



https://www.herber.de/bbs/user/67770.xls

Gruß Matthias


  

Betrifft: AW: Vorschlag ... von: Troubleshooter
Geschrieben am: 04.02.2010 20:57:03

Hols Dir doch aus der Zelle wieder...?

Wie meinst das?


  

Betrifft: AW: Formate in Userform erzingen -> Übergabe an Makro von: SvenS
Geschrieben am: 04.02.2010 18:41:30

Der Ansatz mit CDbl sieht gut aus! So kann ichs offensichtlich gleich bei der Eingabe abfangen...

Für alle:

Private Sub CommandButton1_Click()
If IsNumeric(TextBox1) "<-- Erster Teil der Eingabe einer Zahl" 
And IsNumeric(TextBox2) Then "<-- Dezimalstellen = 2"
Cells(2, 2) = CDbl(TextBox1.Value & Label1.Caption & TextBox2.Value)
Else
MsgBox "es sind nur Zahlen erlaubt"
End If
End Sub


Fehlt nur noch:

2. Wie übergebe ich dann von meiner UserForm die Werte der TextBoxen an das Makro (zur weiteren Verarbeitung in Formeln)?


  

Betrifft: hols Dir doch aus der Zelle wieder ... oT von: Matthias L
Geschrieben am: 04.02.2010 18:53:18




  

Betrifft: AW: hols Dir doch aus der Zelle wieder ... oT von: Troubleshooter
Geschrieben am: 04.02.2010 21:09:24

Ach so!

Cells(2, 2) = CDbl(TextBox1.Value & Label1.Caption & TextBox2.Value)
Du meinst von hier? Klar, das könnts sein! Ich spiel das mal durch...


  

Betrifft: AW: Formate in Userform erzingen -> Übergabe an Makro von: Troubleshooter
Geschrieben am: 07.02.2010 21:21:24

@ MatthiasL

Letztendlich war es die perfekte Vorlage zur endgültigen Lösung!

Vielen Dank!

hier meine Lösung und die funktioniert jetzt perfekt:

Private Sub cmd_send_all_Click()

' ---- Prüfe Eingabe der Felder für Rabatt in Euro ----
If Input_Rabatt_Abs.Visible = True And Input_Rabatt_Abs_Dez.Visible = True Then
    If IsNumeric(Input_Rabatt_Abs) And IsNumeric(Input_Rabatt_Abs_Dez) Then
        Input_Rabatt_Proz_sum = ""
        Input_Rabatt_Abs_sum = CDbl(Input_Rabatt_Abs.Value & Input_Rabatt_Komma.Caption &  _
Input_Rabatt_Abs_Dez.Value)
        Else
           If MsgBox("Bitte nur Zahlen eingeben!", vbOKOnly, "Eingabefehler...") = vbOK Then
        Call cmd_rab_euro_Click
        Input_Rabatt_Abs.SetFocus
        End If
    End If

' --- Variablenwert anzeigen
'MsgBox ("hier die Variable Euro vor der Übergabe: " & Input_Rabatt_Abs_sum)

' ---- Prüfe Eingabe der Felder für Prozent ----
ElseIf Input_Rabatt_Proz.Visible = True And Input_Rabatt_Proz_Dez.Visible = True Then
    If IsNumeric(Input_Rabatt_Proz) And IsNumeric(Input_Rabatt_Proz_Dez) And Input_Rabatt_Proz < _
= 100 Then
        Input_Rabatt_Abs_sum = ""
        Input_Rabatt_Proz_sum = CDbl(Input_Rabatt_Proz.Value & Input_Rabatt_Komma.Caption &  _
Input_Rabatt_Proz_Dez.Value)
        Else
        MsgBox "Der Prozentuale Rabatt kann nur zwischen 0 und 100 liegen!"
        Input_Rabatt_Proz.SetFocus
    End If
End If
Im Modul kann ich dann beide Variablen weiter verwenden...


  

Betrifft: wie schön :-) von: Matthias L
Geschrieben am: 08.02.2010 19:21:13

Hallo

Ohne mich jetzt da weiter reinzudenken, freut es mich das Du Dich hier nochmal gemeldet hast.
Viel Erfolg weiterhin ...

Gruß Matthias


Beiträge aus den Excel-Beispielen zum Thema "Formate in Userform erzingen -> Übergabe an Makro"