2017-02-02 10 views
0

Ich bin mit einem Problem zu kämpfen, dass occures wenn ich versuche, um das Format zu einer Zelle zu ändern Number mit ...vba nicht neu berechnet nicht ein Zellenformat

Die Zelle enthält einen Text wie „00.00.23 , 45 "und ist als Text formatiert. Ich ändere sein Format in "ss.00; @". Wenn ich die Zelle in Excell wähle Ich sehe, dass das Format, um benutzerdefinierte geändert (und im Menü das Format korrekt ist), aber der Text bleibt „00: 00: 23,45“ bis i auf der Zelle klicken verdoppeln und drückt Geben Sie ein (dann wendet er das richtige Format an). Ich lege den Code:

Questa_cartella_di_lavoro.Sheets("Foglio1").Range("F14").value = "00:00:23,45" 
Questa_cartella_di_lavoro.Sheets("Foglio1").Range("F14").NumberFormat = "ss.00;@" 

ich sollte "23,45"

P. S. sehen Ich habe bereits versucht Questa_cartella_di_lavoro.Sheets("Foglio1").calculate .

.

.

Ihnen im Voraus für Ihre Hilfe dankend,

Lorenzo Form Rom.

+0

Mögliche Duplikat [Excel: Wie Zellauswertung zu erzwingen] (http://superuser.com/q/299437/52365) – GSerg

+0

Hallo GSerg, ich sah schnell, aber ich denke es erwähnt diese Lösung nicht (TextToColumns) –

+0

Ich würde 'TextToColumns' persönlich dafür nicht verwenden.Es ist ein großer und komplizierter Mechanismus zum Parsen von Textdateien, und ich bin mir nicht sicher, dass es bei einigen Gebietsschemata oder unter bestimmten Umständen keine Nebenwirkungen geben wird. – GSerg

Antwort

0

Dies funktioniert für mich:

Range("A1:A2").NumberFormat = "@" ' Text format 
Range("A1") = Replace("00:00:23,45", ",", ".") ' "00:00:23.45" 

Range("A2").NumberFormat = "ss.00;@" 
Range("A2") = Replace("00:00:23,45", ",", ".") ' "23.45" 

aber wenn , Dezimaltrennzeichens in Ihrem lokalen, dann vielleicht:

Range("A2").NumberFormat = "ss.00;@" 
Range("A2").FormulaLocal = "00:00:23,45" 

oder

Range("A2").NumberFormat = "ss.00;@" 
Range("A2") = "00:00:23,45" 
Range("A2").Replace ",", "." 
+0

Ich habe diese Lösung versucht, aber Excel bekommt den Wert als Text, ich weiß nicht warum. TextToColumns funktionierte, aber es gibt mir einen weiteren Fehler –

0

Sie platzieren einen Text Zeichenfolge in einer Zelle. Das Ändern der NumberFormat dieser Zelle wird die Anzeige einer Textzeichenfolge nicht beeinträchtigen.

Es wirkt sich auf die Anzeige einer Nummer in der Zelle platziert.

+0

Also was soll ich tun? –

0

Es klingt, als ob der Zellenwert als Text erkannt wird. In diesem Fall hat Ihre Formatierung keine Auswirkungen.

Versuchen Sie es als Datum zu speichern, bevor Sie es in der Zelle setzen, eine Variable.

Dim cellValue As Date 
cellValue = CDate("00:00:23,45") 

Questa_cartella_di_lavoro.Sheets("Foglio1").Range("F14").Value = cellValue 

Questa_cartella_di_lavoro.Sheets("Foglio1").Range("F14").NumberFormat = "ss.00;@" 

EDIT:

Ich habe auch einen Typenkonfliktfehler auf der CDate Linie, wenn ich es getestet - aus irgendeinem Grunde kann es nicht um den Text zu einem Date analysieren. Dies ist für mich aber:

Questa_cartella_di_lavoro.Sheets("Foglio1").Range("F14").NumberFormat = "ss.00;@" 

Questa_cartella_di_lavoro.Sheets("Foglio1").Range("F14").Value = Questa_cartella_di_lavoro.Sheets("Foglio1").Range("F14").Value 

Dies setzt die Zelle ersten Formatierung und dann wieder in den bestehenden Wert, Excel wandelt in den richtigen Datentyp mit der neuen Zellformatierung.

+0

CDate ("00: 00: 23,45") gibt Typ Mismatch Fehler ... –