[gelöst] Zellen Währungsformat entspricht nicht dem Ursprungsformat

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [gelöst] Zellen Währungsformat entspricht nicht dem Ursprungsformat

Re: Zellen Währungsformat entspricht nicht dem Ursprungsformat

von LiCeT » Di, 04.10.2016 21:35

Hallo zusammen,

mit

Code: Alles auswählen

<zellobjek>.FormulaLocal
konnte ich mein Problem lösen.

Vielen Dank!!!

Gruß LiCeT

Re: Zellen Währungsformat entspricht nicht dem Ursprungsformat

von F3K Total » Sa, 01.10.2016 18:15

Hallo Stephan,
ich denke wir liegen etwas falsch, wenn man z.B. diesen "alten" Formatcode nimmt,

Code: Alles auswählen

"#.##0,-- [$DM-407];[ROT]-#.##0,-- [$DM-407]"
, funktioniert es auch ohne eine so formatierte Zelle. Ich denke, es muss irgendwie damit zusammenhängen, dass es bei den Währungen besonders kompliziert ist. Es gibt im Dialog über der Spalte Format, noch ein zusätzliches Listenfeld, mit dem sich die Währung landesspezifisch einstellen läßt.
Mein Schluss: Die Formatcodes für Währungen, bis auf einige Standardcodes, werden dann angelegt, wenn sie wenigstens einmal verwendet werden. Man kann den "neuen" Code mit Xray analysieren, und findet die Eigenschaft

Code: Alles auswählen

 .UserDefined = True
Die "festen" de_DE Codes habe ich mit diesem Makro ausgelesen:

Code: Alles auswählen

Sub get_format_codes
   Dim nKey as long
   Dim local_setting As New com.sun.star.lang.Locale
   'local_setting.Language = "de"
   'local_setting.Country = "DE"
   formate = ThisComponent.NumberFormats
   aFormats = formate.queryKeys(0,local_setting,false)
   osheet = ThisComponent.Sheets(0)
   for i = 0 to ubound(aFormats)
        nKey = aFormats(i)
        oCellKey = osheet.getCellbyposition(0,i+1)
        oCellKey.value = nKey
        oCell = osheet.getCellbyposition(1,i+1)
        oCell.string = formate.getbyKey(nKey).FormatString
   next i
End Sub
Ergebnis:

Code: Alles auswählen

     KEY     |Formatcode LO 5.1.5                        |Formatcode AOO 4.1.2                       
      0      |Standard                                   |Standard                                   
      1      |0                                          |0                                          
      2      |0,00                                       |0,00                                       
      3      |#.##0                                      |#.##0                                      
      4      |#.##0,00                                   |#.##0,00                                   
      5      |#.###,00                                   |#.###,00                                   
      10     |0%                                         |0%                                         
      11     |0,00%                                      |0,00%                                      
      20     |#.##0 DM;-#.##0 DM                         |#.##0 DM;-#.##0 DM                         
      21     |#.##0,00 DM;-#.##0,00 DM                   |#.##0,00 DM;-#.##0,00 DM                   
      22     |#.##0 DM;[ROT]-#.##0 DM                    |#.##0 DM;[ROT]-#.##0 DM                    
      23     |#.##0,00 DM;[ROT]-#.##0,00 DM              |#.##0,00 DM;[ROT]-#.##0,00 DM              
      24     |#.##0,00 CCC                               |#.##0,00 CCC                               
      25     |#.##0,-- DM;[ROT]-#.##0,-- DM              |#.##0,-- DM;[ROT]-#.##0,-- DM              
      30     |TT.MM.JJ                                   |TT.MM.JJ                                   
      31     |NN TT.MMM JJ                               |NN TT.MMM JJ                               
      32     |MM.JJ                                      |MM.JJ                                      
      33     |TT.MMM                                     |TT.MMM                                     
      34     |MMMM                                       |MMMM                                       
      35     |QQ JJ                                      |QQ JJ                                      
      36     |TT.MM.JJJJ                                 |TT.MM.JJJJ                                 
      37     |TT.MM.JJ                                   |TT.MM.JJ                                   
      38     |NNNNT. MMMM JJJJ                           |NNNNT. MMMM JJJJ                           
      39     |T. MMM JJ                                  |T. MMM JJ                                  
      40     |HH:MM                                      |HH:MM                                      
      41     |HH:MM:SS                                   |HH:MM:SS                                   
      42     |HH:MM AM/PM                                |HH:MM AM/PM                                
      43     |HH:MM:SS AM/PM                             |HH:MM:SS AM/PM                             
      44     |[HH]:MM:SS                                 |[HH]:MM:SS                                 
      45     |MM:SS,00                                   |MM:SS,00                                   
      46     |[HH]:MM:SS,00                              |[HH]:MM:SS,00                              
      50     |TT.MM.JJ HH:MM                             |TT.MM.JJ HH:MM                             
      51     |TT.MM.JJJJ HH:MM:SS                        |TT.MM.JJJJ HH:MM:SS                        
      60     |0,00E+000                                  |0,00E+000                                  
      61     |0,00E+00                                   |0,00E+00                                   
      70     |# ?/?                                      |# ?/?                                      
      71     |# ??/??                                    |# ??/??                                    
      72     |# ?/4                                      |
      73     |# ??/100                                   |
      75     |T. MMM JJJJ                                |T. MMM JJJJ                                
      76     |T. MMMM JJJJ                               |T. MMMM JJJJ                               
      77     |NN, T. MMM JJ                              |NN, T. MMM JJ                              
      78     |NN, T. MMMM JJJJ                           |NN, T. MMMM JJJJ                           
      79     |NNNNT. MMMM JJJJ                           |NNNNT. MMMM JJJJ                           
      80     |T. MMM. JJJJ                               |T. MMM. JJJJ                               
      81     |T. MMMM JJJJ                               |T. MMMM JJJJ                               
      82     |MM-TT                                      |MM-TT                                      
      83     |JJ-MM-TT                                   |JJ-MM-TT                                   
      84     |JJJJ-MM-TT                                 |JJJJ-MM-TT                                 
      85     |WW                                         |WW                                         
      99     |LOGISCH                                    |LOGISCH                                    
     100     |@                                          |@                                          
     101     |#.##0 [$DM-407];-#.##0 [$DM-407]           |#.##0 [$DM-407];-#.##0 [$DM-407]           
     102     |#.##0,00 [$DM-407];-#.##0,00 [$DM-407]     |#.##0,00 [$DM-407];-#.##0,00 [$DM-407]     
     103     |#.##0 [$DM-407];[ROT]-#.##0 [$DM-407]      |#.##0 [$DM-407];[ROT]-#.##0 [$DM-407]      
     104     |#.##0,00 [$DM-407];[ROT]-#.##0,00 [$DM-407]|#.##0,00 [$DM-407];[ROT]-#.##0,00 [$DM-407]
     105     |#.##0,-- [$DM-407];[ROT]-#.##0,-- [$DM-407]|#.##0,-- [$DM-407];[ROT]-#.##0,-- [$DM-407]
     106     |##0,00E+00                                 |#.##0,00 [$€-407];[ROT]-#.##0,00 [$€-407]  
     108     |#.##0,00 [$€-407];[ROT]-#.##0,00 [$€-407]  |
Beide haben nur einen festen Code mit Euro Symbol.
72,73 fehlen bei AOO, 106 ist anders definiert als bei LO.
Gruß R

Re: Zellen Währungsformat entspricht nicht dem Ursprungsformat

von F3K Total » Sa, 01.10.2016 14:21

... so schätze ich es auch ein ...
Gruß R

Re: Zellen Währungsformat entspricht nicht dem Ursprungsformat

von Stephan » Sa, 01.10.2016 14:15

habe per Versuch herausgefunden, dass das Format dann gefunden wird, wenn es bereits einer Zelle zugeordnet worden ist
Danke, interessant. Dann sind die Numbering-Standardformate augenscheinlich nur Teil der OpenOffice-Installation und nicht Teil jeder erstellten Datei, sondern nur die genutzten Formate gehen in die Datei ein.



Gruß
Stephan

Re: Zellen Währungsformat entspricht nicht dem Ursprungsformat

von F3K Total » Sa, 01.10.2016 13:57

Hallo Stephan,
habe per Versuch herausgefunden, dass das Format dann gefunden wird, wenn es bereits einer Zelle zugeordnet worden ist.
Gruß R

Re: Zellen Währungsformat entspricht nicht dem Ursprungsformat

von Stephan » Sa, 01.10.2016 13:49

F3K Total hat geschrieben:Hi,
welche Version von AOO/LOO hast Du verwendet?
Betriebssystem?
Ich kann es bei mir nochmal versuchen.
Gruß R
OOo 3.3.0 und AOO 4.1.2 unter Windows 7 Professional, alles deutsch (Deutschland) lokalisiert.


Gruß
Stephan

Re: Zellen Währungsformat entspricht nicht dem Ursprungsformat

von F3K Total » Sa, 01.10.2016 13:43

Hi,
welche Version von AOO/LOO hast Du verwendet?
Betriebssystem?
Ich kann es bei mir nochmal versuchen.
Gruß R

Re: Zellen Währungsformat entspricht nicht dem Ursprungsformat

von Stephan » Sa, 01.10.2016 13:38

so geht es:
bei mir nicht, das gleiche Makro hatte ich auch selbst ursprünglich schon getestet.

Es geht auch nur um den konkreten Formatcode, denn mit diversen anderen Formatcodes geht es ja, z.B.:

Code: Alles auswählen

Sub Format_abfragen()
   Dim local_setting As New com.sun.star.lang.Locale
   formate = ThisComponent.getNumberFormats()
   Msgbox formate.queryKey("0,00", local_setting, True)
End Sub
Der Punkt ist hat nur das der benannte Formatcode einer der Standardcode ist und auch in der GUI konkret verfügbar, er müsste also per Makro abrufbar sein und die Rückgabe der Msgbox sollte 109 sein, wie ich aus:
https://www.amazon.de/OpenOffice-Progra ... 3446404503

ersehen kann.
Sorry für die komische Quelle, ich weiß nur momentan nicht wo sonst noch eine Übersicht ist, im Pitonyak-Dokument finde ich nur eine Teilübersicht der Zahlenformat-IDs


Gruß
Stephan

Re: Zellen Währungsformat entspricht nicht dem Ursprungsformat

von F3K Total » Sa, 01.10.2016 11:55

Hallo Stephan,
so geht es:

Code: Alles auswählen

Sub Format_abfragen()
   Dim local_setting As New com.sun.star.lang.Locale
   formate = ThisComponent.getNumberFormats()
   Msgbox formate.queryKey("#.##0,00 [$€-407];-#.##0,00 [$€-407]", local_setting, True)
End Sub
Gruß R

Re: Zellen Währungsformat entspricht nicht dem Ursprungsformat

von Stephan » Sa, 01.10.2016 11:11

nochmal zu der Frage "Zweckmäßigkeit": ich wollte einen Beispielcode hinschreiben, der deutlich macht wie umständlich es ist ein Zahlenformat für eine Zelle wirklich korrekt anzubringen, denn korrekterweise geht das über die Format_ID und man müsste deshalb vorab prüfen ob ein bestimmter Formatcode bereits verwendet wird, also dafür eine Format_ID existiert.
Ich bekomme nur die Prüfung nicht hin, keine Ahnung was ich falsch mache.

Das Folgende funktioniert NICHT:

Code: Alles auswählen

Sub Format_abfragen()
	Dim local_setting As New com.sun.star.lang.Locale
	local_setting.Language = "de"
	local_setting.Country = "DE"
	
	formate = ThisComponent.getNumberFormats()
	
	Msgbox formate.queryKey("#.##0,00 [$€-407];-#.##0,00 [$€-407]", local_setting, True)
	
End Sub
d.h. die Msgbox liefert -1.


Gruß
Stephan

Re: Zellen Währungsformat entspricht nicht dem Ursprungsformat

von F3K Total » Sa, 01.10.2016 10:23

Hallo Stephan
Stephan hat geschrieben:weil OO/LO die Umwandlung des übergebenen Ausdrucks selbstständig vornimmt
Das habe ich nicht gewußt, Danke für den Hinweis.
Gruß R

Re: Zellen Währungsformat entspricht nicht dem Ursprungsformat

von Stephan » Sa, 01.10.2016 09:57

Bleibt das Währungssymbol in der Zelle, ist es ein Text, mit dem man nicht rechnen kann.
Deswegen mein Vorschlag mit .FormulaLocal:

Code: Alles auswählen

<zellobjek>.FormulaLocal = "2.719,00 €"
denn da steht anschließend eine bereits richtig formatierte Zahl in der Zelle, und kein Text, weil OO/LO die Umwandlung des übergebenen Ausdrucks selbstständig vornimmt.

Dieses Vorgehen ist insbesondere deshalb zweckmäßig weil es auch den Aufwand spart die Zelle, nach der Übergabe mittels .Value, getrennt formatieren zu müssen (denn Letzteres erfordert die Übergabe eines Zellformates an die Zelle und nicht wie vom Ausgangsposter augenscheinlich vermutet eine Formatierung nur auf Basic-Ebene)


Gruß
Stephan

Re: Zellen Währungsformat entspricht nicht dem Ursprungsformat

von F3K Total » Sa, 01.10.2016 09:34

Hallo zusammen,
ich würde es z.B. so machen:

Code: Alles auswählen

function GetLastLine
  rechnungsdatei="C:/Users/<USER>/Desktop/Input.csv"
   if FileExists("file:///"&rechnungsdatei) then
         f = FreeFile()
         Open "file:///"&rechnungsdatei for Input as #f
         Do While not eof(f)
            ' Read line 
             Line Input #f, CurrentLine
            If CurrentLine <>"" then
            LastLine = CurrentLine
            end if
         Loop
         Close #f
         LastLine = Replace(LastLine," €","")
         LastLine = Replace(LastLine,".","")
         LastLine = Split(LastLine,";")
         dim aRow(0)
         aRow(0) = Array(LastLine(0),cdbl(LastLine(1)),cdbl(LastLine(2)),cdbl(LastLine(3)))
         GetLastLine = aRow
    endif
end function

Sub Fill_data
    oSheet = Thiscomponent.Sheets(0)
    oColumn = oSheet.columns.getbyName("A")
    nRow = oColumn.queryEmptyCells().RangeAddresses(0).StartRow
    oTargetRange = oSheet.getcellrangebyposition(0,nRow,3,nRow)
    oTargetRange.setDataArray(GetLastLine)
end sub
D.h. es werden wirklich Zahlen als .Value gesetzt, die Währungszellen müssen nur richtig formatiert werden um sie wieder als € zu sehen.
Vorteil: Man kann damit Berechnungen anstellen. Bleibt das Währungssymbol in der Zelle, ist es ein Text, mit dem man nicht rechnen kann.

Gruß R

Re: Zellen Währungsformat entspricht nicht dem Ursprungsformat

von Stephan » Sa, 01.10.2016 09:22

Aber vollkommen richtig. Ich versuche es mit
*.Value.
ja, dann musst Du es logischerweise mit dem englischen Format nutzen, also:

Code: Alles auswählen

<zellobjek>.Value = 2719.00
Denn Du würdest ja auch nicht schreiben

Code: Alles auswählen

Msgbox 1,1*1,1
sondeern natürlich

Code: Alles auswählen

Msgbox 1.1*1.1

Gruß
Stephan

Re: Zellen Währungsformat entspricht nicht dem Ursprungsformat

von Stephan » Fr, 30.09.2016 21:01

mutmaßlich (aber es ist reine Raterei, weil jegliche Angaben wie ich die Zelle geschrieben wird fehlen) übergibst Du die Geldbeträge als .Value und nicht als .FormulaLocal.
Unter diesen Bedingungen kann ich hier den Fehler in OOo 3.3 nachvollziehen.

Lösung wäre somit mit (beispielsweise):

Code: Alles auswählen

<zellobjek>.FormulaLocal = "2.719,00 €"
zu arbeiten.



Gruß
Stephan

Nach oben