Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Excel - Schweizer Zahlenformat in deutschem Excel (https://www.delphipraxis.net/159695-excel-schweizer-zahlenformat-deutschem-excel.html)

Reinhardtinho 8. Apr 2011 12:57

Excel - Schweizer Zahlenformat in deutschem Excel
 
Hi,

Auf einem deutschen MS Server 2008 ist ein deutsches MS Office-Paket installiert.
Ich habe die Excel-Typenbibliothek importiert und möchte aus meinem Programm heraus Geldbeträge in einem Excel-Dokument anlegen und auch entsprechend formatieren.

Wie kann ich ein benutzerdefiniertes Zahlenformat in Excel anlegen und dort unterschiedliche Zeichen für Tausender- und Dezimaltrennzeichen verwenden.
In Excel selbst gibt es die Möglichkeit, diese Werte fest einzustellen, aber ich muss flexibel sein, da manchmal Euro verwendet wird und manchmal SFr.

Statt 1.678,79 € muss ich SFr. 1'678.79 darstellen.

Vielen Dank für eure Hilfe

Jumpy 8. Apr 2011 14:45

AW: Excel - Schweizer Zahlenformat in deutschem Excel
 
Also ich vermute mal, du steuerst Excel mit deinem Programm fern, ala Ole oder so?
Dann weißt du ja den Excel-Zellen irgendwo den Betrag zu.
In dem Zusammenhang kannst du auch der Zelle oder einem Bereich (Range) über die Eigenschaft NumberFormat einen Formatstring zuweisen. Wie der Aufgebaut sein muss, einfach in Excel ausprobieren.

p80286 8. Apr 2011 14:51

AW: Excel - Schweizer Zahlenformat in deutschem Excel
 
Ich denke, das ist überhaupt kein Problem, da das Datums/Zahlen-Format durch den lokalen Rechner auf dem das Programm ausgeführt wird, bestimmt wird.

Oder wir Excel etwa auf dem Server ausgeführt?

Gruß
K-H

Reinhardtinho 8. Apr 2011 15:39

AW: Excel - Schweizer Zahlenformat in deutschem Excel
 
Zitat:

Zitat von Jumpy (Beitrag 1093935)
Wie der Aufgebaut sein muss, einfach in Excel ausprobieren.

Das mit der Fernsteuerung ist kein Problem, aber ich bekomme es noch nicht mal im Excel selbst hin, das Zahlenformat mit geändertem Tausendertrennzeichen zu bilden. Wenn mir da jemand helfen würde, wäre das super.

Zitat:

Zitat von p80286 (Beitrag 1093938)
Oder wir Excel etwa auf dem Server ausgeführt?

Genau das ist der Punkt. Alle Benutzer verwenden das Programm via Terminal-Session. D.h. ich kann an dem Excel oder an der systemweiten Spracheinstellung nichts ändern.

jobo 8. Apr 2011 16:23

AW: Excel - Schweizer Zahlenformat in deutschem Excel
 
Ohne die Systemeinstellung für Dezimaltrennzeichen zu ändern kannst Du nur tricksen,
also Umformatierung zu Text oder Zahl * 100 und dann die gewünschten Formatangaben vornehmen. In beiden Fällen geht der wirkliche Wert natürlich dahin. Notfalls kann man für weitere Berechnung den Wert in einer zusätzlichen Spalte als Zahl vorhalten.

Für das Format selbst kannst Du Dir ja ein Makro aufzeichnen, während Du es einstellst.

Jumpy 8. Apr 2011 16:29

AW: Excel - Schweizer Zahlenformat in deutschem Excel
 
Selection.NumberFormat = "[$SFr.-807] #,##0.00"

Das ist der Formatstring, den Excel selber generiert hat.
Komma und Punkt werden dabei je nach Systemeinstellung automatisch angepasst und wenn/da du darauf nicht zugreifen kannst, hilft nur ein Workarround (siehe jobo).

Reinhardtinho 11. Apr 2011 07:52

AW: Excel - Schweizer Zahlenformat in deutschem Excel
 
Danke für die Hilfe.

Ist aber wirklich sehr schade, dass es die gewünschte Funktionalität nicht gibt.

ibp 11. Apr 2011 08:41

AW: Excel - Schweizer Zahlenformat in deutschem Excel
 
du kannst für jede Zelle das Zahlenformat unterschiedlich angeben...
Code:
=TEXT(E219; "[$SFr.-807] #,##0.00")

Reinhardtinho 11. Apr 2011 09:07

AW: Excel - Schweizer Zahlenformat in deutschem Excel
 
Zitat:

Zitat von ibp (Beitrag 1094336)
du kannst für jede Zelle das Zahlenformat unterschiedlich angeben...
Code:
=TEXT(E219; "[$SFr.-807] #,##0.00")

Wenn ich das eingebe erhalte ich z.B.:
Code:
SFr. 1234,56000
Ist also auch nicht das gewünschte Ergebnis.

Jumpy 11. Apr 2011 09:15

AW: Excel - Schweizer Zahlenformat in deutschem Excel
 
Ja, aber das (Haupt-)Problem, wie ich es Verstanden habe ist, das als Tausenderseparator ein Hochkommata genommen werden soll und das bekommt man Excel nicht beigebracht. Im Formatstring nimmt man immer Komma als Tsdseparator und Punkt um die Nachkommastellen abzutrennen.
Excel selber entscheidet dann aufgrund der Systemeinstellungen wie es das dann umsetzt/darstellt.

Ein Workarround ist mir noch eingefallen, der aber nur funktioniert, wenn die Daten in Excel nicht mehr "angefasst" werden. Man kann die Größe der Zahl ermitteln und die benötigte Anzahl an Hochkommat in den Formatstring mit einbauen:

Zahl < Tsd:
Selection.NumberFormat = "[$SFr.-807] ##0.00"
Mill. > Zahl > Tsd:
Selection.NumberFormat = "[$SFr.-807] #'###0.00"
Mill. < Zahl:
Selection.NumberFormat = "[$SFr.-807] #'####'###0.00"


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:34 Uhr.

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