Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden (https://www.delphipraxis.net/204327-excel-zahlen-werden-als-zahl-formatiert-muessen-aber-angeklickt-werden.html)

oakley 19. Mai 2020 13:49

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:
ExcelApp := CreateOleObject('Excel.Application');
Workbook := ExcelApp.WorkBooks.Open(excelfilename);
ExcelApp.Range['A1','A1'].EntireColumn.Numberformat := '0,00';
Und die Zahl wird in der Spalte linksbündig
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

Andreas13 19. Mai 2020 14:05

AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
 
Zitat:

Zitat von oakley (Beitrag 1464884)
... Und die Zahl wird in der Spalte linksbündig

Es scheint mir eher ein String zu sein. Zahlenwerte werden von Excel automatisch rechtsbündig formatiert.
Gruß, Andreas

oakley 19. Mai 2020 14:27

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:
ExcelApp.Range['A1','A1'].EntireColumn.Numberformat := '0,00';
nach

Code:
ExcelApp.Range['A1','A1'].EntireColumn.Numberformat := '#.##0,00';
geändert. Aber das Ergebnis ist das gleiche.

LG

Mirko

Jumpy 19. Mai 2020 15:12

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.

https://docs.microsoft.com/de-de/off...-recalculation

Delphi.Narium 19. Mai 2020 16:01

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:
ExcelApp.Range['A1','A1'].EntireColumn.Numberformat := 'Standard';
versucht?

Englisches Excel oder Deutsches?
Wie sieht es mit Tausenderpunkt und Dezimalkomma aus? Ja nach Einstellung könnte es eventuell mit
Delphi-Quellcode:
ExcelApp.Range['A1','A1'].EntireColumn.Numberformat := '0.00';
bzw.
Delphi-Quellcode:
ExcelApp.Range['A1','A1'].EntireColumn.Numberformat := '#,##0.00';
funktionieren.

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.

himitsu 19. Mai 2020 16:49

AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
 
Zitat:

Mir stellt sich gerade die Frage: Ist das, was in A1 steht (aus Excelsicht) überhaupt eine Zahl?
Nein, das sind zwei Zahlen.

Spalte A, Zeile 1


[Edit]
Ups, du meinstest den Wert in dem Feld und nicht diese Angabe "A1".

oakley 19. Mai 2020 17:10

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

Delphi.Narium 19. Mai 2020 17:15

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:
ExcelApp.Range['A1','A1'].EntireColumn.Numberformat
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.

mmw 19. Mai 2020 17:33

AW: Excel Zahlen werden als Zahl formatiert müssen aber angeklickt werden
 
Hallo,
villeicht bringt das was

Application.ErrorCheckingOptions.BackgroundCheckin g = false

siehe

https://docs.microsoft.com/de-de/off...groundchecking

Gruß

Rolf Frei 19. Mai 2020 18:08

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 07:41 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz