Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1644to1648
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Ständige Berechnung in Textbox
21.09.2018 10:47:50
Florian
Hallo liebe Excel und VBA-Experten.
Ich bastel aktuell eine Userform, mit der Aufträge erfasst werden
Userbild
In den orangen Feldern "m²" und "€" sollen die entsprechenden Quadratmeter und die Kosten hierfür pro Positionen ermittelt werden.
Ich möchte dies aber gern während der Eingabe bereits ständig anzeigen lassen.
(Also nicht erst wenn alles eingeben wurde und dann auf einen Button geklickt wird, oder so.)
Mir ist dazu bisher keine Lösung eingefallen :-((
Bisher habe ich nur mit CHANGE das Ganze hinterlegt, aber dann wird ja nur, wenn ein Textfeld _
geändert wird, die Berechnung vorgenommen:

Private Sub Text_P1_Körper_H_Change()
'Berechnung Würfel
If Dropdown_P1_Konfektionierung.Value = "Würfel" Or Dropdown_P1_Konfektionierung.Value = " _
Wuerfel" Then
Text_P1_QM = (((CDbl(Text_P1_Körper_L) * CDbl(Text_P1_Körper_B)) + (CDbl(Text_P1_Körper_L) *  _
CDbl(Text_P1_Körper_H) * 2) + (CDbl(Text_P1_Körper_B) * CDbl(Text_P1_Körper_H) * 2)) / 10000) * Text_P1_Menge
End If
'Berechnung Beutel
If Dropdown_P1_Konfektionierung.Value = "Beutel" Then
Text_P1_QM = ((CDbl(Text_P1_Körper_L) * CDbl(Text_P1_Körper_B) * 2) / 10000) * Text_P1_Menge
End If
'Berechnung Blatt
If Dropdown_P1_Konfektionierung.Value = "Blatt" Then
Text_P1_QM = ((CDbl(Text_P1_Körper_L) * CDbl(Text_P1_Körper_B)) / 10000) * Text_P1_Menge
End If
End Sub
Vielleicht kann mir jemand weiterhelfen oder hat einen Tipp?!
Ich wäre sehr dankbar!
LG, Florian


		

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Tipp
21.09.2018 11:00:03
RPP63
Moin!
Wenn Du das Monstrum von UserForm in den Orcus schickst und statt dessen ein hübsch formatiertes Tabellenblatt nimmst, bist Du alle Probleme los! ;)
Ich bin mir aber sehr sicher, dass Du Deinen Weg smart findest.
Glaube mir: Du irrst!
Zur Frage: Nutze das _Exit
Gruß Ralf
AW: Tipp
21.09.2018 11:13:04
Florian
Hallo Ralf und besten Dank für Dein Feedback.
Das Problem in der Vergangenheit mit Excelsheets und nicht Userformen zeigte, dass Nutzer auch trotz Verankerungen, Blatt und Arbeitsmappenschutz es irgendwie schafften ActiveX-Steuerelemnte zu verschieben/ zu löschen, etc.
Um diese unschöne Baustelle nun etwas sicherer für die Anwender zu gestalten, bastel ich jetzt an einer Lösung nur mit Userformen.
Durch das nutzen der Funktion EXIT müsste man den Befehl zur Berechnung ja quasi dann in jedes andere Feld eintragen, damit bei jedem Textfeld/ Combobox-Verlassen neu berechnet wird, oder sehe ich das falsch?
Anzeige
AW: Tipp
21.09.2018 11:22:41
Gerd
Moin Florian!
..sollte wohl heißen, ohne Userforms hast du mit Userforms keine Probleme. :-)
_Exit
sollte heißen, z.B.
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'hier Codezeilen zur Übertragung nach TextBox..
End Sub
Gruß Gerd
AW: Tipp
21.09.2018 12:12:30
Daniel
Hi
Dann lass die Steuerelemente weg.
Comboboxen kannst du durch die Datenüberprüfung Typ Liste ersetzen.
Gruß Daniel
AW: Ständige Berechnung in Textbox
21.09.2018 11:30:54
Daniel
Ich halte es auch für besser, als Eingabemedium ein entsprechend formatiertes Tabellenblatt zu verwenden.
Wenn du bei der Userform bleiben willst, würde ich so vorgehen:
- Verknüpfe jede Eingabezelle, die für die Berechnung erforderlich ist, mit einer Ausgabezelle (zelladresse mit Tabellenplatz in der Eigenschaft ControlSource eintragen in der Form: 'Tabelle1'!A1 )
- Berechne in einer weiteren Excelzelle das Ergebnis
- Verwende für die Ausgabe auf der Userform keine Textbox, sondern eine Listbox und verknüpfe diese mit der Ergebniszelle, indem du die Zelladresse in die Eigenschaft RowSource einträgst. (Die Verwendung der Listbox hat den Vorteil, dass der angezeigte Wert nicht überschriebeb werden kann.
Es gäbe natürlich noch die Variante, das so zu lösen wie du dir das vorstellt, dazu müsstest du dich aber in die Thematik der Klassenprogrammierung einarbeiten und das ist nicht ganz trivial (ich zumindest habe es bis heute nicht verstanden)
Gruß Daniel
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige