![]() |
Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
Hallo zusammen,
ich speichere ein TAdvStringgrid als Excel ab und erhalte durch nachträgliches Anpassen auch ein ordentlich formatiertes Excel Sheet. Ich habe allerdings noch das Problem mit den Zahlen.Ich verwende:
Code:
Und die Zahl wird in der Spalte linksbündig
ExcelApp := CreateOleObject('Excel.Application');
Workbook := ExcelApp.WorkBooks.Open(excelfilename); ExcelApp.Range['A1','A1'].EntireColumn.Numberformat := '0,00'; und mit einem kleinen grünen Dreieck angezeigt. Klicke ich darauf wird die Zahl sauber formatiert. Ich habe hier schon das ein oder andere gefunden aber irgendwie scheint das formatieren nicht zu funktionieren oder Excel erkennt Ich verwende Excel 365. Viele Grüße Mirko |
AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
Zitat:
Gruß, Andreas |
AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
Hallo Andreas,
wenn ich mit der rechten Maustaste auf die Zahl klicke und nachschaue, sehe ich, das sie als Zahl formatiert ist und oben links die Markierung für den Ablaufverfolgungsfehler angezeigt. Also das grüne Dreieck. Ich habe noch die Zeile:
Code:
nach
ExcelApp.Range['A1','A1'].EntireColumn.Numberformat := '0,00';
Code:
geändert. Aber das Ergebnis ist das gleiche.
ExcelApp.Range['A1','A1'].EntireColumn.Numberformat := '#.##0,00';
LG Mirko |
AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
Das Problem ist, dass man Excel zur Neuberechnung/Evaluierung der Zelle zwingen muss. Das passiert z.B. in dem du da rein klickst. Wie man das jetzt schlau programmatisch machen kann, weiß ich auch nicht. Du könntest jetzt das rechtsbündig noch selber setzen, aber dann ist grüne Dreieck immer noch nicht weg.
![]() |
AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
Mir stellt sich gerade die Frage: Ist das, was in A1 steht (aus Excelsicht) überhaupt eine Zahl?
Wie kommt der Wert in die Exceltabelle? Hast Du da mal etwas Code zu? Oder mal mit
Delphi-Quellcode:
versucht?
ExcelApp.Range['A1','A1'].EntireColumn.Numberformat := 'Standard';
Englisches Excel oder Deutsches? Wie sieht es mit Tausenderpunkt und Dezimalkomma aus? Ja nach Einstellung könnte es eventuell mit
Delphi-Quellcode:
bzw.
ExcelApp.Range['A1','A1'].EntireColumn.Numberformat := '0.00';
Delphi-Quellcode:
funktionieren.
ExcelApp.Range['A1','A1'].EntireColumn.Numberformat := '#,##0.00';
In Excel gibt es oben, über dem Sheet doch auch die Eingabezeile, in der man (statt in 'ner Zelle) auch seine Werte, Zeichenfolgen, Zahlen, Formeln, ... eingeben kann. Wenn es sich bei Zahlen aus Excelsicht um einen String handelt, dann ist dort (in der Regel) vor der Zahl ein einzelnes Hochkomma zu finden. In der Zelle steht die Zahl linksbündig und ist mit 'nem grünen Dreieck gekennzeichnet. In der Eingabezeile müsste dann statt 0 ein '0,00 stehen. Dort werden Zahlen auch nicht mit Nachkommastellen angezeigt, wenn sie keine enthalten. Soll also in der Zelle eine 0 stehen und nur die Darstellung mit zwei Nachkommastellen erfolgen, so darf in der Eingabezeile auch nur eine 0 stehen. Steht dort 0,00 bin ich mit (fast) sicher, dass Excel meint hier eine Zeichenfolge vorliegen zu haben. Prüf' das doch bitte mal zuerst. Solange Excel denkt, es sei eine Zeichenfolge, kannst Du Numberformat beliebig verändern, es wird sich nix wesentliches ändern. |
AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
Zitat:
Spalte A, Zeile 1 [Edit] Ups, du meinstest den Wert in dem Feld und nicht diese Angabe "A1". |
AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
In A1 steht die Überschrift also ein Text.
Und es ist ein deutsches Excel. LG Mirko |
AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
Wenn in A1 Text steht, kann das mit dem Numberformat auch nicht gehen, das ist nunmal nur für Zahlen und nicht für Text.
Delphi-Quellcode:
heißt: Setze das Zahlenformat für alle Zeilen im Bereich von A1 bis A1. Und der Bereich umfasst halt genau nur eine Zelle. Und wenn da Text drinne steht, ist das Numberformat vollkommen überflüssig, da absolut wertlos.
ExcelApp.Range['A1','A1'].EntireColumn.Numberformat
|
AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
Hallo,
villeicht bringt das was Application.ErrorCheckingOptions.BackgroundCheckin g = false siehe ![]() Gruß |
AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
Das Problem ist sicher das NumberFormat. Das muss im ANSI Format angeben werden, also im Prinzip gleich wie in Delphi. Du gibst es aber im deutschen Format an. Deine Code würde hier in der Schweiz so nicht funktionieren, da wir hier ein anderes Zahlenformat haben, sprich Tausender- und Komma-Zeichen genau umgekehrt. Das ANSI Zeichen für den Tausender ist "," und für das Komma wäre es der Punkt ".". NumberFormat='#,##0.00' müsste eigentlich so funktionieren.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz