Excel2007: msoShapeOval wird bei Zoom=90% falsch gezeichnet

07/03/2008 - 01:13 von TomTau | Report spam
Hallo,

ich bin beim Portieren von einer Excel2003-Areitsmappe zu ...2007.

Folgender Code làuft in Excel2003 fehlerfrei (stark gekürzt):

Dim r
Set r = Cells(Zeile, Spalte)

With ActiveSheet.Shapes.AddShape(msoShapeOval, r.Left, r.Top, 2
* r.Width, r.Height)
.Fill.Visible = msoFalse
.Line.Weight = 0.75
.Line.ForeColor.RGB = RGB(0, 0, 0)
End With

Dadurch bekomme ich ein Oval genau über zwei Zellen.
Nehme ich diesen Code in Excel2007, wird das Oval versetzt (nach
links) gezeichnet.
Den Grund habe ich zufàllig selbst herausgefunden:
Mein Blatt ist auf 90%-Zoomgröße eingestellt.
Nehme ich 100%, klappt es wie gewünscht!
Kann ich das Problem irgendwie umgehen, ohne auf meine - nötigen - 90%
zu verzichten?
In Excel2003 jedenfalls hat die Zoomeinstellung keinen Einfluss auf
das Zeichnen dieser Form (sollte doch auch nicht sein, oder?).

Über Hilfe würde ich mich sehr freuen.

MfG
TomTau
 

Lesen sie die antworten

#1 Thomas Tauber
11/04/2008 - 14:23 | Warnen spam
Hallo,

ich wage mir nach reichlich einem Monat, dieses Thema noch einmal nach vorn
zu bringen.
Ich konnte den Fehler eingrenzen.

Hier die genaue Vorgehensweise:

Ich nehme (unter Excel2003!) ein leeres Blatt und füge bei 'Diese
Arbeitsmappe' folgenden Code hinzu:

Sub Oval_Zeichnen()
'zeichnet Ellipse über 2 Spalten
Dim r As Range
Set r = Cells(39, 6)
'Oval wird mit durchsichtiger Füllfarbe, schwarz und 0,75 dick
gezeichnet
With ActiveSheet.Shapes.AddShape(msoShapeOval, r.Left, r.Top, 2 *
r.Width, r.Height)
.Fill.Visible = msoFalse
.Line.Weight = 0.75
.Line.ForeColor.RGB = RGB(0, 0, 0)
End With
End Sub

Ich speichere dann im 'alten' Format .xls ab.
Führe ich den Code (unter Excel2007) mit 100%-Zoom aus, wird das Oval
richtig über zwei Spalten in Zeile 39 (Spalten 6 +7) gezeichnet.
Stelle ich Zoom auf 90% ein, ist das Oval fast um eine Zeile nach unten
versetzt.
All das passiert aber nur unter Excel2007, unter Excel2003 làuft es wie
erwartet.

Erstelle ich den gleichen Code direkt unter Excel2007 und speichere als
.xlsm ab, dann geht es.
Aber ich habe mehrere Formularvorlagen unter Excel2003 entwickelt, die ich
jetzt alle neu 'schreiben' müsste.
Kann ich die alten Formulare doch noch verwenden? Leider bringt auch das
'Konvertieren' in das neue Format nichts!

Über Hilfe würde ich mich sehr freuen, da das mein Projekt z.Z. unter
Excel2007 zeitlich sehr verzögert :-(

MfG
TomTau

Ähnliche fragen