Supportnet / Forum / Tabellenkalkulation
VBA: Rechen mit ComboBoxen
Frage
Hi!
Ich habe eine Userform mit 6 Komboboxen. In diesen komboboxen kann man 10 werte von 0,1 bis 1,0. Wurde nichts ausgewählt hat die box den wert "0"
Ich möchte das diese inhalte addiert werden. habe das mit folgendem code probiert:
Dim a, b, c, d, e, f
a = ComboBox1.Value
b = ComboBox2.Value
c = ComboBox3.Value
d = ComboBox4.Value
e = ComboBox5.Value
f = ComboBox6.Value
TextBox14.Value = a * 1 + b * 1 + c * 1 + d * 1 + e * 1 + f * 1
(Wenn ich die werte nicht mit 1 multipliziere, dann schreibt mit VBA in das textfenster die werte einfach hintereinander)
Das ergebnis stimmt aber nie! Anscheinend ignoriert VBA alles was vor dem komma steht, da z.B
0,2+1,0 als ergebnis 3 angezeigt wird.... oder
0,3+0,8=11
1,0+0,7=17
1,0+1,0=2 (wenigstens das ist richtig)
Wenn ich in der deklaration der variablen
As Integer, oder
As Single, oder
As Double
eingebe ändert sich auch nix....
Zudem würd ich gerne wissen in welchen Sub ich das schreiben müsste, damit das ergebnis sofort nach der änderung der komboboxen angezeigt wird
Ich könnte die Summe auch in dem Exel-Sheet in das die daten aus den komboboxen geschrieben werden errechnen, und das ergebnis in der Userform anzeigen, aber auch das klappt nicht.
Antwort 1 von !mpact
OK... er rechnet jetzt richtig!
Musste im
ControlPanel
Regional and Language Options
Regional Options
Customize
Decimal Symbol auf " . "
und Digit grouping auf " , "
stellen.
Das problem lag anscheinen darin das ich die deutschen einstellungen auf dem englischen OS verwendet hab und VBA damit nicht klar gekommen ist!
In welches Sub das müsste, würde ich aber trotzdem noch gerne wissen :-)
Musste im
ControlPanel
Regional and Language Options
Regional Options
Customize
Decimal Symbol auf " . "
und Digit grouping auf " , "
stellen.
Das problem lag anscheinen darin das ich die deutschen einstellungen auf dem englischen OS verwendet hab und VBA damit nicht klar gekommen ist!
In welches Sub das müsste, würde ich aber trotzdem noch gerne wissen :-)
Antwort 2 von coros
Hallo !mpact,
die Werte, die Du in ein Textfeld oder eine ComboBox einträgst sind vom Typ her Texte und mit denen kann man nicht rechnen. Wenn Du aber mit einer Umwandelfunktion arbeitest, kannst Du damit rechnen. Mal als Beispiel für Deine 6 Auswahlfelder würde der Code folgendermaßen aussehen
Ich persönlich würde den Code hinter eine Schaltfläche legen, da ansonsten immer geprüft werden muss, ob sich korrekte Werte zum Berechnen in den AUswahlfeldern befinden.
Ich hoffe, Du kommst klar. Bei Fragen melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
die Werte, die Du in ein Textfeld oder eine ComboBox einträgst sind vom Typ her Texte und mit denen kann man nicht rechnen. Wenn Du aber mit einer Umwandelfunktion arbeitest, kannst Du damit rechnen. Mal als Beispiel für Deine 6 Auswahlfelder würde der Code folgendermaßen aussehen
TextBox14 = _
CDbl(ComboBox1) + _
CDbl(ComboBox2) + _
CDbl(ComboBox3) + _
CDbl(ComboBox4) + _
CDbl(ComboBox5) + _
CDbl(ComboBox6)Ich persönlich würde den Code hinter eine Schaltfläche legen, da ansonsten immer geprüft werden muss, ob sich korrekte Werte zum Berechnen in den AUswahlfeldern befinden.
Ich hoffe, Du kommst klar. Bei Fragen melde Dich.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 3 von !mpact
Wow...Danke coros!
Hat einwandfrei funktoniert! Jetzt hab ich da endlch was vernünftiges dastehen, und nicht so ne komische formel in der alles mit 1 multipliziert werden muss!
In den comboboxen können nur Zahlen ausgewählt werden, von daher hab ich mit dem prüfen der werte keine probleme... Danke nochmmal
Rein aus interesse: wozu sind die unterstriche nach den + zeichen???
Das problem mit der sofortigen berechnung nach der eingabe besteht immer noch! Welcher Sub?
Hat einwandfrei funktoniert! Jetzt hab ich da endlch was vernünftiges dastehen, und nicht so ne komische formel in der alles mit 1 multipliziert werden muss!
In den comboboxen können nur Zahlen ausgewählt werden, von daher hab ich mit dem prüfen der werte keine probleme... Danke nochmmal
Rein aus interesse: wozu sind die unterstriche nach den + zeichen???
Das problem mit der sofortigen berechnung nach der eingabe besteht immer noch! Welcher Sub?
Antwort 4 von coros
Hallo !mpact,
die Striche dienen nur dazu, dass man die gesamte Codezeile nicht hintereinander, sondern übersichtlich untereinander schreiben kann.
Die Berechnung nach der Eingabe kannst Du durch das Change-Ereignis einer oder aller ComboBoxen beginnen lasse. Also bei z.B. ComboBox6_Change wird wenn in ComboBox6 eine Auswahl getroffen wird, z.B. die Berechnung gestartet. Aber wie schon geschrieben, dann musst Du sicherstellen, das in jeder ComboBox ein korrekter Wert steht, da es sonst einen Laufzeitfehler gibt.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
die Striche dienen nur dazu, dass man die gesamte Codezeile nicht hintereinander, sondern übersichtlich untereinander schreiben kann.
Die Berechnung nach der Eingabe kannst Du durch das Change-Ereignis einer oder aller ComboBoxen beginnen lasse. Also bei z.B. ComboBox6_Change wird wenn in ComboBox6 eine Auswahl getroffen wird, z.B. die Berechnung gestartet. Aber wie schon geschrieben, dann musst Du sicherstellen, das in jeder ComboBox ein korrekter Wert steht, da es sonst einen Laufzeitfehler gibt.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 5 von _mpact
Hi!
Das mit den untersrichen is ja mal praktisch... hab ich nich gewusst........ Super
Aber wie genau das mit dem ComboBox_change funktionier versteh ich nich so ganz....
Die Rechnung einfach so reinschreiben geht nicht.
in den Komboboxen stehen immer nur Zahlen drin. Ist nichts ausgewählt erhalten die Boxen den Wert Null. Also kann es ja eigentlich nicht an nicht-korrekten werten liegen.
ICh mach das mit VBA erst seit 2 Wochen, hab also nur sehr wenig ahnung!
Das mit den untersrichen is ja mal praktisch... hab ich nich gewusst........ Super
Aber wie genau das mit dem ComboBox_change funktionier versteh ich nich so ganz....
Die Rechnung einfach so reinschreiben geht nicht.
in den Komboboxen stehen immer nur Zahlen drin. Ist nichts ausgewählt erhalten die Boxen den Wert Null. Also kann es ja eigentlich nicht an nicht-korrekten werten liegen.
ICh mach das mit VBA erst seit 2 Wochen, hab also nur sehr wenig ahnung!

