lange habe ich schon mitgelesen und es war nicht nötig einen Beitrag zu erstellen, denn die Lösungen zu meinen Problemen konnte ich immer finden :)
Ich baue seit einiger Zeit an einem komplexen Tool zur Auftragserfassung. Ich bin mittlerweile bei der grundlegend neuen V2 und konnte die Performance und Usability deutlich verbessern. Auch der Grundstein ist flexibler.
Bei V1 wie auch bei V2 hatte ich Probleme mit Buttons, die sich sukzessive verschieben und doppelt angezeigt werden. Am Anfang ein paar Millimeter, das Größte was ich bemerkte waren rund 10 cm. Das Problem tritt bei Excel 2013 (privater Rechner) und Excel 2016 (Frimenrechner) auf. Bei der aktuellen Version V2 verschieben sich nur noch die rötlichen und türkisen Buttons (siehe Screenshot). Klickt man im eigentlichen Feld des Buttons, erscheint er an der neuen Stelle, kann aber nur dort betätigt werden. Ohne Klick sieht alles normal aus. Um das Problem in der Programmier-Phase in den Griff zu bekommen hilft nur der Entwurfsmodus - Buttons markieren - entfernen - Strg-Z
Auch die Rahmen in dem Bereich haben ein ähnliches Problem wie ihr seht. Die Lösungsversuche sind angehängt.
Das einzige was mir noch einfällt, worauf ich aber eigentlich keine Lust habe, die Buttons per VBA regelmäßig zu entfernen und neu zu erstellen. (Wenn der Nutzer eh größere Funktionen aufruft und es nicht ins Gewicht fällt.)
Ich habe auch Excel repariert - etwas länger her, Temp Daten zu den Forms gelöscht - hatte alles nicht den gewünschten Erfolg. In den ersten Versionen waren wesentlich mehr Steuerelemente betroffen. Die Datei besteht aus etwa 14 sinnvollen Tabellen, weil die Informationen bei uns leider immer aus verschiedenen Listen abgerufen werden. Derzeit hat es rund 2500 Zeilen Code und es werde noch rund 600 sich dazu gesellen, bis die Datei einen nutzbaren Punkt erreicht.
Gibt es die Möglichkeit Excel zu zwingen die Buttons neu zu zeichnen?
Ist dieser Fehler bekannt und es existiert ein guter Lösungsweg?
Habt ihr eine andere Idee?
Danke
Constantin
Folgende Lösungen VBA basiert habe ich erfolglos getestet:
---
ActiveWorkbook.RefreshAll
---
For Each shp In fixOrte.tblBasisfeld.Shapes
shp.Visible = False
Next
For Each obj In fixOrte.tblBasisfeld.OLEObjects
obj.Visible = False
Next
For Each shp In fixOrte.tblBasisfeld.Shapes
shp.Visible = True
Next
For Each obj In fixOrte.tblBasisfeld.OLEObjects
obj.Visible = True
Next