VBA Zellenformatierung
#1
Hallo Zusammen,
ich habe ein kleines Problem mit meinem Makro!
In einer Userform die ich erstellt habe, kann unter anderm in einer Combobox eine laufende Nummer wie zB 1-3; 4-14; 10-3 oder 12-10 ausgewählt werden. Die ausgewählte Nummer soll dann in eine Tabelle übertragen werden. Soweit ist dies auch kein Problem. Alle Werte der Userform werden korrekt über tragen mit ausnahme der laufenden Nummer. Diese wird in ein Datum umgewandelt. Formatiert habe ich ursprünglich wie folgte "Format(ComboBox2.Text)" (ohne Anführungszeichen). Ändere ich nun die Formatierung in "Format(ComboBox2, "'d-m")", gibt er mir viele Nummern richtig an, aber nicht alle. Bei der Eingabe von 4-14 schreibt er immer 14-4 in die Zelle. Somit fehlt der Bezug und alle anderen Werte werden falsch berechnet. Dies passiert auch wenn ich "Format(ComboBox2, '"m-d")" einstelle. Gibt es eine elegantere Lösung das die Werte so in die Zelle der Tabelle geschrieben werden, wie ich sie auch in der ComboBox stehen habe?

Das gleiche Problem habe ich auch mit einer weiteren Combo.box. Hier ist das Zahlenformat allerdings xxx-xx-x. Im ersten Block sind es 2 bis 7 Zahlen in der mitte immer 2 Zaheln und am Ende immer eine Zahl (zB. 1234567-12-3 oder 13-09-8). Auch hier werden die Zahlen als Datum in die Tabelle überführt. Hier soll auch der Wert so in die Zelle eingetragen werden, wie er in der ComboBox steht. Die Zellen der Tabelle sind auf Text formatiert.

Ich hoffe es ist verständlich was ich meine.

Grüße
Jens
Top
#2
Hallo!
Du musst die Zielzellen in der Tabelle als Text formatieren (entweder vorher oder auch im Code vor Übergabe des Wertes).
Dann klappt folgendes getestete problemlos:
ActiveCell = "4-14"

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#3
Hab jetzt erst gelesen, dass Deine Tabellen als Text formatiert sind.
Da es bei mir anstandslos funktioniert, wäre es nicht schlecht, dass Du die Mappe mal (anonymisiert?) zur Verfügung stellst.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#4
Hallo,

wenn die Combobox Inhalte das richtige Format haben, dann sollte einfach

cells(1,1) = ComboBox2.Text

reichen.

Wenn Du das Format erst in der ComboBox einstellen musst, dann probier folgendes:

cells(1,1)= CStr(Format(ComboBox2, "'00-00"))

Wenn Format "d-m" nutzt, interpretiert Excel dies als Datum (Day-Month) und denkt noch weiter und erkennt 14 als Tag und 4 als Monat.
Gruß Atilla
Top
#5
@Ralf
Das schicken der Datei ist ein größeres Problem, da ich da einiges löschen muß und ich sie ungern öffentlich posten möchte.
Geht es privater?

Die Einstellung: CStr.... bewirkt bei der Eingabge 4-14 das dies : 424-74 ausgegeben wird.
Top
#6
Du könntest mir die Datei per Mail schicken, dies dürfte aber nicht notwendig sein.
Lösche alle Inhalte bis auf das Userform aus der Datei (die Combobox muss natürlich gefüllt sein).
Denn bei mir funktioniert das ja problemlos ohne Verrenkungen.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#7
Per Mail wäre mir lieber, da der wichtigste Teil ohne alles umzuschreiben, nicht so einfach zu entfernen geht. Habs mehrmals versucht jedes mal kamen dann Meldungen das dies und jenes nicht mehr verknüpft ist und so weiter. Damit ließ sich die Userbox nicht  mehr "abspielen"
Top
#8
EDIT:
Blödsinn geschrieben!
Ich schicke Dir meine Adresse per PN.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#9
Hi Jens!
Ist genauso wie ich schrieb:
Die Spalten C und K in "Substanzen nach 3d" habe ich als Text formatiert,
den Code nur an zwei Stellen geändert:
Code:
'Spalte C, erste freie Zeile die CAS-Nummer übertragen
Sheets("Substanzen nach 3d").Cells(erste_freie_Zeile, 3) = ComboBox2.Text
'Spalte K, erste freie Zeile die lfd. Nr. übertragen
Sheets("Substanzen nach 3d").Cells(erste_freie_Zeile, 11) = ComboBox3.Text
Funktioniert einwandfrei.

Die (geänderte) Datei ist per Mail wieder an Dich unterwegs.
Viel Spaß auf dem Geburtstag!  :19:

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#10
Welch kleine Änderung, aber man muß es erst mal wissen. Der Grundrahmen der Datei steht jetzt. Jetzt kommt der Feinschliff.
Es funktioniert super.
Es ist mein erstes richtiges Makro welches ich erstellt habe. Dank Google und der "Makro aufzeichnen" Funktion bin ich soweit gekommen. Doch für manche Dinge sind einfach Fachleute und der persönliche Kontakt unerlässlich.

Grüße
Jens
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste