Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Kombinationsfeld Steuerelement liefert keine Zahlen





Frage

Hallo zusammen, ich habe folgendes Problem: Ich möchte ein Kombinationsfeld in Excel nutzen. Dazu habe ich es aus der Steuerelemente Toolbox auf meine Excel-Tapete gezogen und unter Eigenschaften in LinkedCell die Zielzelle und in ListFillRange drei Zellen angegeben, aus denen ausgewählt werden soll. Soweit so gut! Aber wenn ich das Kombi-Feld nun benutze erhalte ich in der Zielzell die Fehlermeldung "Als Text gespeicherte Zahlen". Das kann ich natürlich händisch in Zahlen umwandeln, aber eigentlich soll mit dieser Zahl automatisch weitergerechnet werden und der Anwender später nicht mit solchen Dingen belastet werden. Die Auswahlzellen sind als Zahl formatiert. Was muss ich tun, damit in der Zielzelle das Zahlenformat übernommen wird? Ich nutze Excel 2003. Vielen Dank für eure Hilfe, Bernhard

Antwort 1 von BernhardW

Hallo,
hab zumindest den Workaround gefunden mit der Funktion "WERT" den Text in eine Zahl umzuwandeln.
Unschön bleibt jedoch, dass in dem Kombinationsfeld keine 1000er Trennzeichen drin sind.
Wenn also doch noch jemand eine Idee hat, dann immer her damit!

Grüße,
BernhardW

Antwort 2 von woher

Hallo,
in ähnlichen Fällen hilft oft die Multiplikation mit 1.
mfg
Wolfgang

Antwort 3 von BernhardW

Hallo Wolfgang,
danke für Deine Antwort.
Wo soll ich denn mit 1 multiplizieren?
In dem Feld aus dem ich die Daten beziehe bringt es nichts.
Die erscheinende Auswahlliste hat auch die Tausender-Trennzeichen, das ausgewählte Element weist diese dann aber nicht mehr auf.

Antwort 4 von woher

Hallo,
o.g. statt der Funktion WERT.
mfg
Wolfgang

Antwort 5 von coros

Hallo Wolfgang,

das musst Du etwas anders realisieren. Das Problem ist, dass ein Kombinationsfeld generell den ausgewählten Wert als Text überträgt. Daher musst Du durch einen VBA-Code die Zahl für die ComboBox in das richtige Format bringen. Hört sich im Moment schwieriger an als es ist.

Als 1. musst Du in den Eigenschaften in dem Feld "LinkedCell" die Zellbezeichnung löschen. Diese Angabe dient ja dazu, in welcher Zelle der ausgewählte Wert im Tabellenblatt erscheinen soll. Das wird nachher durch den VBA-Code geregelt.
Dann gehe in der Symbolleiste "Steuerelement-Toolboox" auf die 1. Schaltfläche von Links (ToolTippText: Entwurfsmodus).
Danach markiere das Kombinationsfeld und gehe in der Symbolleiste "Steuerelement-Toolboox" auf die 3. Schaltfläche von links (ToolTippText: Code anzeigen). Dadurch landest Du im VBA-Editor und der Cursor sollte zwischen 2 Textzeilen blinken. Merke Dir den Namen in der oberen Textzeile, den benötigst Du nachher noch. Der Namen sollte in etwa "ComboBox1_Change" (die Zahl könnte anders sein) lauten. Lösche nun die beiden Zeilen und füge stattdessen den Code

Private Sub ComboBox1_Change()
ComboBox1.Value = Format(ComboBox1.Text, "#,##0.00")
Range("A3") = CDbl(ComboBox1.Value)
End Sub


dort hinein. Ändere überall die Zahl hinter dem Text "ComboBox", gegen die, die Du Dir ja merken solltest.
Ändere auch die Zellbezeichnung A3 gegen die Zellbezeichnung, in der bei Dir die Auswahl der ComboBox erscheinen soll. In meinem Beispiel ist es halt die Zelle A3.
Danach wechsele wieder in das Tabellenblatt und klicke in der Symbolleiste "Steuerelement-Toolboox" auf die 1. Schaltfläche von Links (ToolTippText: Entwurfsmodus beenden).
Fertig, das war's.
Wenn Du alles richtig gemacht hast, sollte Dir der ausgewählte Wert mit 1000er Trennzeichen angezeigt werden und der ausgewählte Wert sollte als Zahl übertragen werden.

Ich hoffe, Du kommst klar.

Solltest Du nicht wissen, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

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 6 von woher

Hallo Oliver "Coros"
hier geht es nicht um eine Frage von mir, ich hatte eine Lösung gepostet.
Wenn ich BernhardW in Antwort 1 richtig verstanden habe, dann hat er das Kombinationsfeld den ausgewählten Wert nicht in die eigentliche Zielzelle ausgeben lassen, sondern irgendwo anders, um dann mit der Funktion "Wert" mit Bezug dorthin, dies in eine "echte" Zahl umzuwandeln.
o.g. Funktion ist nicht nötig, es genügt:
=(Zielzelle des Kombinationsfeldes)*1
es gibt dann auch keine Formatierungsprobleme.
Es gibt eine Reihe von Programmen, die Daten nach Excel exportieren können, dabei werden von Excel immer wieder Zahlen als Text angesehen. Hier habe ich jetzt gelernt, das auch Excel selbst Ziffern als Text ausgibt und sich weigert damit zu rechnen.
Dann hilft oft, was ich "Excel in den Hintern treten" nenne, nämlich die Multiplikation mit "1", dann "überlegt" sich Excel das nochmal, ob mit den gegebenen Werten nicht doch gerechnet werden kann. Diese Multiplikation muss nicht mit Formeln erfolgen. Es genügt in eine beliebige freie Zelle eine "1" einzugeben, kopieren, Datenbereich markieren, Menü "Bearbeiten", "Inhalte einfügen", die Option "Multiplizieren" wählen und OK, und Ziffern werden zu Zahlen!
mfg
Wolfgang

Antwort 7 von coros

Hallo Wolfgang,

sorry, für die Namensverwechselung.
Ich sehe das allerdings anders. Ich verstehe das so, dass die Auswahl in der Zielzelle als Zahl ausgegeben werden soll. Das geht mit dem Kombinationsfeld nicht, da es standardmäßig die Auswahl als Text überträgt.
Für Aufklärung kann aber nur Bernhard sorgen.

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 8 von woher

Hallo Oliver,
es gibt m.E. keinen Widerspruch zwischen uns. Bernhard und ich haben uns zur Lösung des Problems einer Hilfszelle bedient, er benutzt die Funktion "Wert", ich multipliziere einfach nur mit "1".
Du hast, wie immer, eine VBA-Lösung.
Ich hatte meinem Lösungsvorschlag dann noch eine Erläuterung angefügt, weil vergleichbare Probleme hier und anderswo mehrfach angesprochen wurden und mein Lösungsansatz bei ganz unterschiedlichen Problemstellungen anwendbar ist.
mfg
Wolfgang

Antwort 9 von BernhardW

Hallo zusammen,
erst einmal vielen Dank für die Tipps und Bemühungen, Licht ins Dunkel zu bringen!
Im Laufe der Disskussion scheinen Unstimmigkeiten in Bezug auf meine vielleicht nicht
ganz eindeutig formulierte Frage aufgetreten zu sein, die ich natürlich gerne ausräumen
möchte.

Mein Problem war in der Tat, dass ich mit dem Ergbnis in der Zielzelle des
Kombinationsfeldes, also mit der ausgewählten Zahl, weiterrechnen wollte. Dies gelang
mir nicht, da es sich um Text handelte.

Für meine Ansprüche ist es eigentlich völlig ausreichend, wenn ich den Text in der
Zielzelle in eine Zahl umwandle (ob nun mit WERT oder mit *1 ist mir eigentlich auch egal)
und dann mit dieser weiterrechne.

Allerdings gibt es eine kleine Sache die mich ärgert:
Wenn ich eine der Zahlen im Kombinationsfeld ausgewählt habe, steht diese im
Kombinationsfeld nicht mehr mit "Tausender-Trennzeichen", was die Sache etwas
unübersichtlich macht (es handelt sich um Werte im neunstelligen Bereich, da helfen
Trennpunkte schon sehr). Das liegt ja sicherlich an der Textformatierung.

Coros, Deine Antwort scheint genau mein Problem zu lösen. Ich werde das morgen mal
ausprobieren und poste dann ob es funktioniert hat.

Nochmals vielen Dank euch beiden für die Lösungsvorschläge!

Güße,
BernhardW

Antwort 10 von BernhardW

Hallo Coros,
ich habe gerade mal Deinen Lösungsvorschlag ausprobiert. Leider habe ich noch einige Schwierigkeiten:
Ich habe mich an Deine sehr ausführliche Anleitung gehalten. Da bei mir schon

Private Sub ComboBox1_Change()

End Sub


stand, habe ich Deinen Vorschlag einfach dazwischengeschrieben. Das sieht dann so aus:

Private Sub ComboBox1_Change()
ComboBox1.Value = Format(ComboBox1.Text, "#,##0.00")
Range ("Z4") = CDb1(ComboBox1.Value)
End Sub


Wenn ich nun eine Zahl im Kombinationsfeld auswähle kommt die Fehlermeldung:

"Fehler beim Kompilieren: Sub oder Function nicht definiert"

Das VB-Fenster wird wieder aufgeblendet und "
Private Sub ComboBox1_Change()
" ist gelb markiert. Weiterhin ist "CDb1" grau markiert.

Hast Du eine Idee, was ich falsch gemacht habe?

Grüße,
BernhardW

Antwort 11 von coros

Hallo Bernhard,

wenn Du wirklich dort CDb1 (Cäsa,Dora,Berta eins) zu stehen hast, ist das falsch. Die Umwandelfunktion lautet CDbl (Cäsa, Dora,Berta, Ludwig).

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 12 von BernhardW

Hallo Oliver,
vielen Dank für Deine schnelle Antwort!

Da l und 1 sehr ähnlich aussehen, habe ich es verwechselt.

Jetzt geht alles - wirklich sehr schön.

Danke noch mal für die ausführliche Anleitung!

Grüße,
BernhardW

Antwort 13 von coros

HAllo Bernhard,

ja, dass kann schnell mal passieren. Danke Dir für die Rückmeldung.

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.