Formate gehen verloren

24/02/2009 - 01:41 von Arnulf Sopp | Report spam
Moin!

In meiner hier schon mehrfach diskutierten Datei zur
Schulklassenverwaltung ergab sich eine Änderung, die ein neues Problem
zeitigte:

Beim Einlesen von Daten aus àlteren Dateien geht die Formatierung der
Zielzellen in der aktuellen Datei verloren. Der Code (auf das
wesentliche reduziert):

Range(ZelleWert) = Formel 'Formel nimmt die Bezug auf alte Datei
...
Range(ZelleWert).Select 'Formel auf benachbarte Zellen kopieren
Selection.AutoFill Destination:=Range("Q42:Q46"), Type:=xlFillDefault
...
Range("Q42:Q46").Copy 'Aus dem Eingelesenen Stoff Werte machen
Range("Q42:Q46").PasteSpecial Paste:=xlPasteValues

Da scheint aber mit den Values noch etwas mehr anzukommen, denn die
Darstellung mit einer Nachkommastelle geht flöten (falls diese 0
betràgt). Auch der Rahmen um diese Zellen geht verloren.

Wie kriege ich hin, dass tatsàchlich nur Werte dort landen und die
Formatierung nicht beeinflusst wird?

Tschüs!

Arnulf
 

Lesen sie die antworten

#1 Thomas Ramel
24/02/2009 - 06:22 | Warnen spam
Grüezi Arnulf

Arnulf Sopp schrieb am 24.02.2009

In meiner hier schon mehrfach diskutierten Datei zur
Schulklassenverwaltung ergab sich eine Änderung, die ein neues Problem
zeitigte:

Beim Einlesen von Daten aus àlteren Dateien geht die Formatierung der
Zielzellen in der aktuellen Datei verloren. Der Code (auf das
wesentliche reduziert):

Range(ZelleWert) = Formel 'Formel nimmt die Bezug auf alte Datei



Du solltest hier mit den expliziten Objekten arbeiten:

Range(ZelleWert).Formula = Formel

oder

Range(ZelleWert).FormulaLocal = Formel


...mangels nàherer Infos deinerseits ist eine konkrete(re) Hilfe da leider
nicht möglich


...
Range(ZelleWert).Select 'Formel auf benachbarte Zellen kopieren
Selection.AutoFill Destination:=Range("Q42:Q46"), Type:=xlFillDefault



Das kannst Du wie folt zusammenfassen:

Range(ZelleWert).AutoFill Destination:=Range("Q42:Q46"), Type:=xlFillDefault

Wobei hier in aller Regel dann das Format der ersten Zelle in alle anderen
kopiert wird.

Range("Q42:Q46").Copy 'Aus dem Eingelesenen Stoff Werte machen
Range("Q42:Q46").PasteSpecial Paste:=xlPasteValues



Auch das kannst Du etwas einfacher gestalten:

Range("Q42:Q46").Value = Range("Q42:Q46").Value


Da scheint aber mit den Values noch etwas mehr anzukommen, denn die
Darstellung mit einer Nachkommastelle geht flöten (falls diese 0
betràgt). Auch der Rahmen um diese Zellen geht verloren.



*Wann genau* passiert dies denn?
Bist Du den Code schon mal mit F8 durchgegangen und hast nach jedem Scrhitt
geprüft wie das Format ausgesehen hat, resp. wann die unerfünschte
Verànderung aufgetreten ist?

Wie kriege ich hin, dass tatsàchlich nur Werte dort landen und die
Formatierung nicht beeinflusst wird?



Wie 'alt' ist die Mappe?
Hast Du darin schon viel 'rumgemacht' und veràndert, hinzugefügt und wieder
gslöscht; gerade auch im VBA-Editor?

Teste mal ob das Ganze auch in einer neuen Mappe genauso auftritt - wenn
dem nicht der Fall ist, hast Du eine korrupte Mappe und solltest sie neu
aufbauen.


Mit freundlichen Grüssen
Thomas Ramel

- MVP für Microsoft-Excel -
[Vista Ultimate SP-1 / xl2007 SP-1]

Ähnliche fragen