Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA - Unterschiedliche Ergebnisse je nach Durchfühungsart
#1
Hallo Community!

Ich besitze Office 2010 und erhalte je nachdem, ob ich eine Prozedur per Button, F5 oder F8 durchlaufen lasse, unterschiedliche Ergbenisse.

Folgende Prozedur wird durchlaufen:

Code:
       Worksheets("tblInputMask").ChartObjects("ChartOrig").CopyPicture
       
         With Worksheets("tblData")
             .Pictures.Paste
             y = .Cells(21, Columns.Count).End(xlToLeft).Column
             x = .Shapes.Count
             links = .Cells(13, y - 2).Left
             oben = .Cells(13, y).Top
                With .Shapes(x)
                  .LockAspectRatio = msoFalse
                  .Left = links
                  .Top = oben
                  .Height = 121
                  '.Width = 220
                  .Width = Columns(y - 2).Width + Columns(y - 1).Width + Columns(y).Width
                  .Name = "Chart_" & tblData.Cells(2, LastColumn + 2).Value
                End With
         End With
Dabei varriert die Width des Charts bzw. die Variable "y".
Wenn ich den Code mittels F8 durchlaufe, erhalte ich die korrekte Breite.
Starte ich den Code mittels Button aus dem Excel-Dokument, so ist die Breite falsch.
Ich glaube sogar, dass ich unter Office 2016 die richtige Breite erhalten habe.
Woran kann das nur liegen?
Hat jemand eine Idee?
Antworten Top
#2
Hat keiner eine Idee?
Antworten Top
#3
... nein, bis jetzt noch nicht Wink

Im Ernst: Die Beispieldatei wäre hilfreich, damit man den Fehler eventuell nachvollziehen kann.

VG - Lucky Joe
Antworten Top
#4
Würde ich wirklich sehr gerne machen (:
Es handelt sich jedoch um ein geschützes Dokument mit sensiblen Datei. Leider ist eine Musterdatei nicht möglich.


Ich weiß wie ärgerlich dies ist :/

Ich dachte eher, es handelt sich um einen allg. Fehler innerhalb der Office-Versionen.
Antworten Top
#5
Hi,
wenn bei Durchsteppen etwas funktioniert was beim Durchlauf nicht funktioniert kann dies auf ein Zeitproblem hindeuten.

Zuerst die Frage: Was ist mit F5 - funktioniert es da - dann ist es eher kein Zeitproblem
Ist der Button im Blatt auf TakeFokusOnClick auf False gesetzt?

Prinzipiell bei Arbeiten mit Grafiken:
Immer dafür sorgen, dass der Zoom auf 100% ist
Nach einem Einfügen Zeitgeben, ca. 20 - 200 MS
Dies kann man über die API Sleep ganz gut steuert hinter dem Einfügebefehl z.B.

Im Modul im Deklarationsteil
Private Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)

und dann z.B. Sleep 20 an entsprechender Stelle

Einfach mal testen

Gruß Jeanie
Gruß Jeanie
Antworten Top
#6
Hallo jeanie!

Vielen Dank für Deinen Beitrag.

Ich habe im entsprechenden Modul deinen Code ganz oben eingefügt sowie an mehreren Stellen mit Call Sleep(1500) eingefügt.
Leider ohne Erfolg.

Mit F8 erhalte ich das richtige Ergebnis. Auf Windows 10 mit Office 365/2016 erhalte ich auch mit F5 das richtige Ergebnis.


Schalte ich MsgBox vor " Columns(y - 2).Width + Columns(y - 1).Width + Columns(y).Width"

so erhalte ich stets unterschiedliche Ergebnisse
Antworten Top
#7
Hi,
was mir noch auffällt ist, dass du die Columns nicht über das Blatt ansprichst, dich also auf das Aktive Blatt beziehst.

ich denke mal
Worksheets("tblData").columns... ist hier gesünder Smile


Aber warum das mit F8 dann anders läuft ist wirklich seltsam. (Solltest du tatsächlich F5 mit einem anderen aktiven Blatt starten ist das dann natürlich erklärlich)

Natürlich können auf dem Rechner noch irgendwelche anderen Dinge laufen.
Es gibt auch Situationen, in welchen Excel das Blatt automatisch (im Hintergrund) aktiviert wenn ein Shape eingefügt wird.
Hat der Rechner einen Drucker angeschlossen?

Wenn du dass rein auf Office 10 reduzieren kannst und auch auf einem anderen Rechner mit Office 10 reproduzierst wird es interessant.
Gruß Jeanie
Antworten Top
#8
Es war in der Tat eine unvollständige Referenzierung die Ursache für dieses Problem (:

Ich muss wirklich besser drauf achten.

Ich bedanke moich vielmals!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste