Informationen und Beispiele zum Thema CheckBox | |
---|---|
![]() |
CheckBox-Seite mit Beispielarbeitsmappe aufrufen |
Informationen und Beispiele zum Thema MsgBox | |
---|---|
![]() |
MsgBox-Seite mit Beispielarbeitsmappe aufrufen |
Informationen und Beispiele zum Thema CommandButton | |
---|---|
![]() |
CommandButton-Seite mit Beispielarbeitsmappe aufrufen |
Informationen und Beispiele zum Thema Userform | |
---|---|
![]() |
Userform-Seite mit Beispielarbeitsmappe aufrufen |
Informationen und Beispiele zum Thema Label | |
---|---|
![]() |
Label-Seite mit Beispielarbeitsmappe aufrufen |
Informationen und Beispiele zum Thema TextBox | |
---|---|
![]() |
TextBox-Seite mit Beispielarbeitsmappe aufrufen |
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 = Truebzw.
TextBox1.Visible = Falserealisiert. 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.
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
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 IfIm 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