Gelegentlich stelle ich mich in einer Tabelle vor, die unter magischen Schaltflächen oder Listenfeldern leidet, die im Laufe der Zeit größer oder kleiner werden.
Nichts im Code weist darauf hin.
Hat noch jemand diese Freude erlebt?
Das Problem scheint auf die Art und Weise zu beruhen, wie Windows nicht native Auflösungen auf Monitoren verarbeitet, und kann auf verschiedene Weise vermieden werden.
Das Problem kann ein kompletter Albtraum sein, wenn es passiert, aber es passiert nur zeitweise.
Wir haben vor kurzem ein Excel-Arbeitsblatt getestet, das von ein paar Dutzend Personen verwendet wurde, und eine gute Idee der Ursache und mögliche Korrekturen entwickelt.
Die Ursache scheint auf ein Setup zurückzuführen zu sein, bei dem Bildschirme in einer anderen als der nativen Auflösung verwendet werden. Dies kann leicht passieren, wenn ein Benutzer einen externen Monitor an einen Laptop anschließt und die resultierende Bildschirmkonfiguration nicht sorgfältig auswählt. Wenn zum Beispiel ein Laptop an einen Projektor angeschlossen ist (vielleicht ein alter mit einem nativen 1024 x 768-Display), der Laptop jedoch ein 1280 x 800 ist und der Benutzer wählt duplizieren die Anzeige anstelle von Erweitern it (Einstellungen unter "An Projektor anschließen" oder "Anzeige" in Windows 7). Das Ergebnis ist ein unvorhersehbares und in der Regel unbefriedigendes Bild auf beiden Bildschirmen, wobei beide nicht in nativen Auflösungen enthalten. Wir haben festgestellt, dass diese Einstellungen fast immer ernste Probleme mit Excel-Schaltflächen verursachen, insbesondere mit ActiveX-Steuerelementen. Bei wiederholten Klicks schrumpfen sie manchmal bis zur Unlesbarkeit. andere Male erweitern sie sich auf den gesamten Bildschirm.
Wenn wir Benutzer anweisen, die Anzeigeeinstellung extend zu verwenden und das Ergebnis auf zwei Bildschirmen mit nativen Auflösungen zu sehen ist, wird das Problem meistens nicht erkannt.
Es gibt auch codebasierte Möglichkeiten, das Problem zu minimieren. Wir haben versucht, die Position und Größe der Schaltflächen und Steuerelemente zurückzusetzen, wenn Sie darauf geklickt haben (was zu langwierigem Code führt, wenn Sie viele Schaltflächen verwenden). Das hat manchmal funktioniert. Wir haben auch versucht, die autosize-Eigenschaft von wahr nach falsch und zurück zu ändern (dies funktioniert im Entwicklermodus manuell) und behebt mehr Instanzen, aber anscheinend nicht alle.
als Ursache wurde festgestellt, dass Personen das Spreasheet auf einem Computer öffnen, auf den über Remotedesktop zugegriffen wird. Die Bildschirmauflösung unterscheidet sich zwischen lokalen und Remote-Computern. Dies betrifft die Steuerelemente, die in der Steuerelement-Toolbox zur Verfügung stehen, aber um das Problem mit einem alten Steuerelement für Formulartasten zu erfahren, ist meine unbefriedigende Antwort die Verwendung dieses Befehls.
Dieses Problem ist tatsächlich auf die Bildschirmauflösung zurückzuführen. Meistens tritt es auf, wenn der Benutzer bei Verwendung der Excel-Anwendung eine Verbindung zu einem Projektor oder zu WebEx herstellt.
Eine einfache Lösung für dieses Problem besteht darin, den Benutzer aufzufordern, den Computer ohne Peripheriegeräteanschlüsse (Projektor) neu zu starten und die Excel-Anwendung erneut zu öffnen.
Das plagt mich seit Jahren, ein- und ausgeschaltet. Es gibt eine Reihe von Korrekturen in der Umgebung, aber sie scheinen voll und ganz zu sein .. Es war immer noch in Excel 2010 (passiert mir im Mai 2014) passiert und ist In einigen Berichten wird in Excel 2013 immer noch vorgetragen .. Die beste Beschreibung, die ich gefunden habe und die zumindest meiner Situation entspricht (Excel 2010, kein RDP beteiligt, keine Druckvorschau) ist hier:
(Dies kann für Benutzer von Excel 2013 möglicherweise nicht hilfreich sein.)
BEARBEITEN: Hinzufügen von Details für den Fall, dass der Technet-Link jemals tot wird, sagt der Technet-Artikel:
Installieren Sie zunächst Microsoft Hotfix 2598144 für Excel 2010, verfügbar: hier .
SECONDLY, wenn Ihr Symptom lautet "Eine ActiveX-Schaltfläche ändert sich nach dem Anklicken in einem Excel 2010-Arbeitsblatt in die falsche Größe", sollten Sie:
OR ZWEIT, wenn Ihr Symptom ist "Ein Formularsteuerelement für Schaltflächen wird in einer Arbeitsmappe nach Anzeige der Druckvorschau der Arbeitsmappe in Excel 2010 falsch angezeigt", sollten Sie:
OR ZWEIT, wenn Ihr Symptom ist "Wenn eine ActiveX-Schaltfläche in einem Excel 2010-Arbeitsblatt in einer falschen Größe angezeigt wird, nachdem Sie die Druckvorschau des Arbeitsblatts angezeigt haben", sollten Sie:
Viel Glück. Dieses Problem ist so schmerzhaft ...
Die zuvor besprochenen Korrekturen, die Active X-Steuerelemente nach Klickereignissen programmatisch neu zu positionieren/zu positionieren oder die Registrierung (mit dem D Word LegacyAnchorResize) zu ändern, konnten das Problem mit Excel 2010/Windows 7 64 Bit nicht lösen.
Die Lösung für mich wurde hier gefunden: https://support.Microsoft.com/en-us/kb/838006
Für Excel 2010 weist der Link auf Folgendes hin:
Dieses Problem ist sehr frustrierend. Ich habe die Erfahrung gemacht, dass die Eigenschaften der ActiveX-Objekte normalerweise richtig eingestellt sind. Ich habe eine UDF von oben so geändert, dass sie nur auf einem aktiven Blatt ausgeführt werden kann. Dadurch wird alles zurückgesetzt, wie es vor dem Verkleinern war.
Public Sub ResizeAllOfIt()
Dim myCtrl As OLEObject
For Each myCtrl In ActiveSheet.OLEObjects
Dim originalHeight
Dim originalWidth
originalWidth = myCtrl.width
originalHeight = myCtrl.height
myCtrl.height = originalHeight - 1
myCtrl.height = originalHeight
myCtrl.width = originalWidth
Next myCtrl
End Sub
In Excel 2010 bin ich ständig auf dieses Problem gestoßen (was mich immer wieder zu diesem Thread zurückbringt). Ich habe zwar keine 100% ige Lösung gefunden, aber ich glaube, ich habe einige Informationen, die anderen helfen können.
Während ich mühsam mit den Tasten herumspielte, entdeckte ich, dass VERSCHIEDENE EREIGNISSE für jedes Objekt unterschiedliche Probleme verursachten. Zum Beispiel,
Die einzige Lösung, die für mich funktioniert, ist das Schreiben von Code, um die Größe/den Text für jedes Objektereignis zurückzusetzen, das die zufällige Größenänderung verursacht hat. Wie so ...
Dabei ist MaterialNum der Name des Eingabefelds und MouseDown das Ereignis ...
Private Sub MaterialNum_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
' Reset the size, font style, and size
With Worksheets("QuoteForm").Shapes("MaterialNum")
.Height = 21
.Width = 101.25
.Left = 972.75
.Top = 87
With .DrawingObject.Object.Font
.Name = "Arial"
.Size = 12
End With
End With
End Sub
Außerdem musste ich einige Optionen in der Formatsteuerung ändern (Rechtsklickobjekt> Formatsteuerung):
Im Bereich Objekteigenschaften (Rechtsklick auf Objekt> Eigenschaften) setze ich TakeFocusOnClick auf false
Ja, das ist zeitaufwändig und langwierig, da es mit jedem Objekt gemacht werden muss, aber es ist die einzige Lösung, die für mich funktioniert (Und es scheint eine schnellere Lösung zu sein, als darauf zu warten, dass Microsoft dies korrigiert !!!). Hoffentlich hilft es anderen.
Ich hoffe, andere finden das hilfreich
Könnte es sein, dass der Knopf definiert ist, um an den Ecken einer Zelle zu haften, anstatt frei zu schweben?
Überprüfen Sie es mit
Format | Eigenschaften | Objektpositionierung
und wählen Sie alles außer "Verschieben und Größe mit Zellen"
Ein alter Thread, aber ich hatte dieses Problem und löste es, indem ich zunächst die Optionsfelder, in denen das Problem auftrat, in meinem Fall gruppierte und dann die Größe dieser Gruppe in einem Auto_Open als solche festlegte (zurücksetzte):
With ThisWorkbook
.Worksheets("1").Shapes("grpInput").Width = 383.1
.Worksheets("2").Shapes("grpSuite").Width = 383.1
.Worksheets("3").Shapes("grpLoc").Width = 383.1
.Worksheets("4").Shapes("grpDecision").Width = 383.1
End With
Ich hatte dieses Problem einige Male und zur Lösung habe ich Folgendes getan:
Ich habe festgestellt, dass dieses Problem alles verursacht hat, als wir den Laptop an einen Projektor angeschlossen und die Datei gespeichert haben. Jedes Mal, wenn das Problem auftauchte, wiederholte ich die Schritte 1. und 2. und meine ActiveX-Objekte verhalten sich erneut
[Excel PROFESSIONAL PLUS 2016, 32BITS, VERSION 1802, BUILD 9029.2167]
Ich hatte das gleiche Problem und Ich konnte das Problem durch Anpassen der Anzeigeskalierung in Windows 10, 64 Bit lösen. Es ist extrem einfach und funktioniert für einen einzelnen Benutzer. Folgen Sie einfach den Anweisungen unten und Sie haben alle Formularsteuerelemente, Blattformen, Figuren und ActiveX-Steuerelemente auf ihre ursprüngliche Größe zurückgesetzt. Keine Notwendigkeit, zu programmieren oder fortgeschrittene Trickery/Zauberei/Hacks auszuführen. Wenn der bereitgestellte Link unterbrochen wird, wiederholen Sie einfach diese Schritte.
Um die benutzerdefinierte Skalierung für die Anzeige in Windows 10 festzulegen, müssen Sie folgende Schritte ausführen.
Einstellungen öffnen.
Es ist ein alter Beitrag, aber ich hoffe, es hilft jedem, der sich mit diesem nervigen und stressigen Excel-Problem befasst.
https://winaero.com/blog/set-display-custom-scaling-windows-10/
Wir haben dies gerade auf Unternehmensebene gelöst, indem Sie zu allen makroaktivierten Arbeitsmappen das folgende Modul hinzugefügt haben:
Option Explicit
Type ButtonSizeType
topPosition As Single
leftPosition As Single
height As Single
width As Single
End Type
Public myButton As ButtonSizeType
Sub GetButtonSize(cb As MSForms.CommandButton)
' Save original button size to solve windows bug that changes the button size to
' adjust to screen resolution, when not in native resolution mode of screen
myButton.topPosition = cb.top
myButton.leftPosition = cb.Left
myButton.height = cb.height
myButton.width = cb.width
End Sub
Sub SetButtonSize(cb As MSForms.CommandButton)
' Restore original button size to solve windows bug that changes the button size to
' adjust to screen resolution, when not in native resolution mode of screen
cb.top = myButton.topPosition
cb.Left = myButton.leftPosition
cb.height = myButton.height
cb.width = myButton.width
End Sub
Rufen Sie sie einfach am Anfang und am Ende Ihres Codes auf:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
' Turn off ScreenUpdating to make sure the user dosn't see the buttons flicker
GetButtonSize CommandButton1 ' Saves original button size
' Do cool things
'
'
'
SetButtonSize CommandButton1 ' Restores original button size
Application.ScreenUpdating = True
' Turn ScreenUpdating back on when you're done
End Sub
Meine Monitore scheinen alle auf native Auflösungen eingestellt zu sein, was das Rätsel vertieft. Ich habe jedoch festgestellt, dass das Problem durch das Ausführen von ETWAS auf die Schaltfläche (Verschieben oder Ändern der Größe) irgendwie behoben wird. Diese Routine automatisiert das Verschieben und stellt dann die ursprüngliche Einstellung wieder her.
Der folgende Code scheint das Problem zu beheben, zumindest für Schaltflächen.
Public Sub StablizeButton(oButton As MSForms.CommandButton)
With oButton
' If True, then temporary distortion is remedied only by clicking somewhere.
' If False, then the temporary distortion is remedied merely by moving the mouse pointer away.
.TakeFocusOnClick = False
' For best results: In the Properties Sheet, initialize to False.
.Left = .Left + 200 ' Move the button 200 units to the right, ...
.Left = .Left - 200 ' ... and then move it back.
End With
End Sub
Rufen Sie es wie folgt auf:
Private Sub MyButton_Click()
StablizeButton MyButton
' Remainder of code.
End Sub
Ich habe festgestellt, dass keine dieser Antworten das Steuerelement an eine Zeile/Spalte bindet. Das hat für mich ziemlich sauber funktioniert. Grundsätzlich "messen" Sie, wohin das Objekt gehen soll, und setzen Sie es einfach in den Aktivierungscode. Im folgenden Beispiel rastet die Schaltfläche immer bei D8: F10 ein. Zeilen/Spalten sind in der Regel zuverlässiger als die Computerauflösung.
Private Sub Worksheet_Activate()
'Note this is done in the sheet code, not a Module.
With Me.Shapes("CommandButton1")
.Left = Me.Range("A1:C1").Width
.Top = Me.Range("a1:a7").Height
.Width = Me.Range("D1:F1").Width
.Height = Me.Range("A8:a10").Height
End With
End Sub
Das Ergebnis wird in etwa so aussehen:
Ich habe dieses Problem bei allen Objekten (Schaltflächen, Textfeldern usw.) gefunden. Wenn ich mehrere Blätter in der Vorschau drucke/drucke, sind alle Blätter außer dem ersten in der Folge Objekte verschoben oder deren Größe geändert. Nach vielen Tests ist die einfachste Lösung, um die Seite nach oben oder unten zu zoomen und zur ursprünglichen Einstellung zurückzukehren.
Nachdem ich viele der Lösungen für diese und verwandte Beiträge ausprobiert hatte, stellte ich fest, dass die Lösung eines anderen Problems, das Microsoft veröffentlicht hatte, auch bei diesem speziellen Problem zuverlässig funktioniert hat, zumindest in dem Kontext, in dem ich arbeite. Ich habe diese Probleme in einer Auflösung erlebt, die von den hier angebotenen Laptops stammt, und auf einem PC, wenn ich auf eine nicht native Auflösung umschalten würde. Das heißt, Schaltflächen, die größer als normal geladen werden und beim Anklicken größer werden, und Text und Bilder in diesen Schaltflächen schrumpfen (und zumindest die Einstellung für den Text blieb gleich, sodass ich keine Möglichkeit sah, ihn programmgesteuert zu ändern.) oder anders.) Dies waren in meinem Fall keine zeitweiligen Probleme. Ich hatte jedoch zeitweise Probleme, nachdem ich die Druckvorschau verwendet hatte, für die Microsoft eine Lösung für hier veröffentlicht hat. Ich habe es versucht und es scheint zu funktionieren.
Die Lösung: Schließen Sie für Excel die App und löschen Sie die MSForms.exd-Datei aus C:\Users{UserName}\AppData\Local\Temp\Excel8.0
, während Sie sich in der Auflösung befinden, in der Sie die Schaltflächen anzeigen möchten. Sie können auch nach anderen .exd-Dateien in Ihrem lokalen AppData\Temp-Ordner nach anderen Office-Dateien suchen Apps.
Wie bereits erwähnt, handelt es sich hierbei um eine von Microsoft vorgeschlagene Lösung für ein anderes Problem: Die Tasten funktionieren nach der Installation der Updates von Dec '14 nicht mehr. Hier ist der Link zu diesem Artikel. In diesem Fall handelt es sich um eine einmalige Korrektur. Hier müssen Sie dies möglicherweise jedes Mal tun, wenn Sie die Auflösung ändern.
Jetzt mit Excel 2013 und dies geschieht JEDER Zeit, wenn ich meine Anzeige verlängere, während Excel ausgeführt wird (und jedes Mal, wenn ich die Erweiterung entferne).
Das Update, das ich mit dem Implementieren begonnen habe, besteht darin, Hyperlinks anstelle von Schaltflächen zu verwenden und ein Benutzerformular mit allen anderen ActiveX-Steuerelementen zu öffnen.
ich habe das nicht getestet, aber ich denke, das hat mit der Zoom-Eigenschaft zu tun (vielleicht activewindow.Zoom = false
).
Kann auch eine Schleife für Shapes ausführen, die .Placement = xlMove
in workbook_open und window_activate definieren. Dies dient dazu, Shapes daran zu hindern, deren Größe mit Zellen zu ändern (wird sich jedoch mit ihnen bewegen).
ich benutze Excel 2013 und hatte dieses Problem noch nie, ich verwende es auch niemals aus der Ferne ... und versuche nur, mit kleinen Ideen zu helfen
Ich habe möglicherweise ein Update gefunden: " Stellen Sie sicher, dass alle Formen auf dem Arbeitsblatt eindeutige Namen haben " (einschließlich Kontrollkästchen/Optionsfelder (OLE-Steuerelemente) sowie Bilder und andere Formtypen ...).
Da das Problem intermittierend ist, kann ich dies nicht garantieren. Ich habe zwei Formulare, die jetzt mit diesem Fix funktionieren, aber "zwei" ist ein sehr kleiner Sampleset und könnte nur ein Zufall sein. Dennoch sind dies Schritte, die ich unternommen habe:
Ich habe alle Formen im Problemblatt (wsForm) auf einem leeren Blatt (Blatt1) aufgelistet:
Sub ListShapes()
Dim spShape As Shape
Dim intRow As Integer
Sheet1.Range("A1:F1") = Array("Name", "Left", "Top", "Width", "Height", "Bottom Right Cell")
intRow = 2
For Each spShape In wsForm.Shapes
Sheet1.Cells(intRow, 1).Value = spShape.Name
Sheet1.Cells(intRow, 2).Value = spShape.Left
Sheet1.Cells(intRow, 3).Value = spShape.Top
Sheet1.Cells(intRow, 4).Value = spShape.Width
Sheet1.Cells(intRow, 5).Value = spShape.Height
Sheet1.Cells(intRow, 6).Value = spShape.BottomRightCell.Address
intRow = intRow + 1
Next
End Sub
Ich zählte dann jeden Formnamen in Spalte A mit einer Formel in Spalte G:
= COUNTIF ($ A $ 2: $ A $ 120, A2)
Offensichtlich den Bereich anpassen ... Sie können dann nach allen Formen filtern, die in dieser Spalte keine "1" haben. Mit der "unteren rechten Zelle" können Sie die Form in Ihrem Arbeitsblatt finden: Umbenennen Sie sie, indem Sie die Form auswählen und anschließend im Feld Name/Referenz oben links in Excel einen neuen eindeutigen Wert eingeben.
Diese Formliste half auch, einige "tote" Formen (0 Höhe oder 0 Breite) zu finden, die lange vergessen und nicht verwendet wurden.
Ich hoffe das funktioniert für dich! Ich hoffe, dass es für mich bei zukünftigen Ereignissen funktioniert ...
Das Gruppieren der Steuerelemente scheint für mich zu funktionieren. Ich würde das bestätigen oder kommentieren, aber SO lässt mich nicht. Beachten Sie, dass dieses Problem häufig auftritt, wenn Sie W8-Anzeigeskalierung verwenden und über einen hochauflösenden Laptop und einen älteren Monitor verfügen.
Einige dieser Probleme können auf Steuerelemente zurückzuführen sein, deren Größe sich beim Auffüllen ändert. Ich neige dazu, die IntegralHeight - Eigenschaft von Steuerelementen wie Listenfeldern von True (Standard) auf False zu ändern, um eine automatische Größenänderung der Steuerelementhöhe zur Laufzeit zu verhindern.
Ich finde, dass das Problem nur dann auftritt, wenn das Einfrieren von Fenstern aktiviert ist. Dies ist normalerweise in den meisten Apps aktiviert, da Sie die Befehlsschaltflächen usw. an einem Ort platzieren, an dem sie nicht aus dem Blickfeld gerollt werden.
Die Lösung, die sich als erfolgreich erwiesen hat, besteht darin, die Steuerelemente zu gruppieren und gleichzeitig sicherzustellen, dass die Gruppe über den Bereich der Frostschutzfenster hinausragt. Dazu füge ich ein Steuerelement außerhalb des Bereichs der Freeze-Fenster hinzu, füge es der Gruppe hinzu, blende es aber auch aus, damit es nicht sichtbar ist.
Es ist sehr komisch. Die Eigenschaften Width & Height werden nicht verkleinert, wenn sie abgefragt werden (entweder im Code oder mithilfe des Eigenschaftenblatts), sie ändern sich jedoch anscheinend.
Ich habe festgestellt, dass wenn ich das Eigenschaftsblatt verwende und die Breite von Standard 15 in 14 und dann von BACK in 15 ändere, es dies fixiert.
Der folgende Code funktioniert für mich (und hat einen amüsanten visuellen Effekt auf dem Arbeitsblatt: Sie klicken, sie schrumpft, der Bildschirm flackert und dehnt sich zurück aus).
MEINE LÖSUNG im Code (auf dem Klickereignis für das Kontrollkästchen):
Dim myCtrl As OLEObject
For Each myCtrl In ActiveSheet.OLEObjects
myLab = myCtrl.Name
myCtrl.Height = 14 ' to "wake up" the property.
myCtrl.Height = 15 ' to reset it back to normal
myCtrl.Width = 12 ' just making sure
Next myCtrl
Wenn Sie nicht möchten, dass sich die Schaltfläche vor- und zurückbewegt, können Sie die ursprüngliche Platzierung in Ihren Code einfügen. Deaktivieren Sie die Bildschirmaktualisierung, wenn Sie auf die Schaltfläche klicken. Überprüfen Sie, ob sich die Platzierung auf dem Steuerelement unterscheidet
DP
Ändern Sie die Zoomeinstellung mit dem rechten unteren Schieberegler auf 100%. Es wurde für mich auf beiden Monitoren unterschiedlicher Größe behoben.
Fügen Sie diesen Code einer REG-Datei hinzu. Doppelklicken Sie auf und und bestätigen Sie. Starten Sie Excel neu.
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\options]
"LegacyAnchorResize"=dword:00000001
[HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\Draw]
"UpdateDeviceInfoForEmf"=dword:00000001
Ich habe manchmal das gleiche Problem. In meinem Fall konnte ich sie zu 100% in einer Datei replizieren, aber bei einer praktisch identischen Datei war sie inkonsistent. Ich fand auch, dass der Größenfehler nicht dauerhaft war - ich konnte die Datei speichern und erneut öffnen, um das Erscheinungsbild der Schaltfläche wiederherzustellen. Ich könnte auch ein neues Fenster erstellen und dann das beschädigte Fenster verwerfen. Ich verwende eine Monitorkonfiguration.
Für mich wurde die Schaltfläche beim Zugriff auf die Sammlung HPageBreaks des Blatts geändert. Ich konnte das Problem vermeiden, indem ich die Fensteransicht vorübergehend wie folgt änderte:
ActiveWindow.View = xlPageBreakPreview
' do pagination stuff using HPageBreaks
ActiveWindow.View = xlNormalView
Nach dem Durchsuchen des Netzes scheint es die beste Lösung zu sein, die Datei als .xlsb (binär) statt als .xlsm zu speichern
Was ich vor einiger Zeit angefangen habe, war ein einziges Sub, das die Größe aller meiner Steuerelemente festlegt. Ich kann dieses Sub dann von jedem Punkt im Code ausführen, an dem die Steuerelemente wachsen oder schrumpfen. Es ist manchmal eine besonders heikle Arbeit, aber es hält meine Schaltflächen davon ab, meine Tabelle zu essen.
Ich hatte ein ähnliches Problem, fand jedoch heraus, dass es durch das Ein- und Auszoomen der Seite schnell behoben wurde. Deshalb habe ich den untenstehenden Code als schnelle Lösung an der Unterseite meines Makros hinzugefügt. Ich bin kein Excel-Quiz, aber es scheint gut zu funktionieren. Ändern Sie die untere Zahl, um den bevorzugten Zoom anzuzeigen.
ActiveWindow.Zoom = 100
ActiveWindow.Zoom = 90
Ich habe ein Update gefunden, das funktioniert und das Problem für einen einzelnen Benutzer löst. Wenn Sie meinen kleinen Spruch nicht lesen möchten, können Sie direkt zur Lösung springen.
RANT:
Ich habe dieses dumme Problem seit den Dinosauriern. Microsoft hat in der Zwischenzeit zahlreiche Ressourcen zur Verfügung gestellt, um unzählige wichtige Updates für die Office-Suite bereitzustellen, und dennoch bleibt dieses Problem unberücksichtigt. Es ist absolut ärgerlich. Ich habe überhaupt keinen Grund zu einem Upgrade, wenn grundlegende Dinge wie diese nicht funktionieren. Sicher verwendet jemand bei MS ActiveX-Steuerelemente in Excel direkt auf einer hochauflösenden Anzeige, oder?
Ich habe dieses Problem auf meinem Desktop-PC nicht erlebt, keine Ahnung, warum, aber auf meinem Surface Pro 4 gehen meine ActiveX-Steuerelemente immer dann in die Bananen, wenn ich darauf klicke.
Heute habe ich beschlossen, dem auf den Grund zu gehen. Ich suchte hoch und niedrig und probierte jede Lösung aus, die in verschiedenen Foren vorgeschlagen wurde (von denen keine übrigens funktioniert). Es spielt keine Rolle, ob die Steuerelemente gruppiert sind oder nicht, ob gesperrt ist oder nicht, ob Hotfix installiert ist oder nicht.
Gestern hatte ich ein anderes Problem mit fehlerhaften Dingen in einer anderen App namens Traktor (DJ-Software), bei der die Steuerung herumsprang, wenn die Skalierung der Anzeige auf einen Wert eingestellt wurde, der kein genaues Vielfaches von 100% war. Ein Benutzer fand, dass die Lösung darin bestand, den Kompatibilitätsmodus für diese Anwendung zu bearbeiten. Also habe ich dasselbe für Excel gemacht, und es hat funktioniert! Jetzt bleiben meine Steuerelemente unabhängig von der Bildschirmauflösung und Skalierung.
LÖSUNG:
(Stellen Sie sicher, dass Excel nicht ausgeführt wird.)
Jetzt wird Excel mit seiner nativen Auflösung ausgeführt, und ActiveX-Steuerelemente laufen nicht aus. Der einzige Nachteil ist, dass Excel nicht auf die Bildschirmskalierung reagiert, sodass die Dinge möglicherweise etwas kleiner aussehen, als man möchte. Auf meinem Surface Pro 4 ist mehr als akzeptabel
ANMERKUNGEN:
1) Die Schritte 2 und 6 sind in Excel 2016 erforderlich, da das Dialogfeld "Eigenschaften" für Excel.EXE die Registerkarte "Kompatibilität" nicht bietet. Nach dem Umbenennen wird die Registerkarte verfügbar.
2) Diese Lösung funktioniert nur für Einzelbenutzer. Wenn Sie also eine Excel-Datei mit ActiveX-Steuerelementen an Ihre Kollegen senden, werden die ActiveX-Steuerelemente auf ihrem System nicht korrekt angezeigt, es sei denn, sie ändern die Einstellungen des Kompatibilitätsmodus.
3) Nach dem Anwenden dieses Hacks scheinen sich zuvor beschädigte Excel-Dateien beim Öffnen selbst zu reparieren, wobei alle Steuerelemente ihre ursprünglichen Abmessungen wiederherstellen.
Bitte testen und kommentieren, ich hoffe das kann jemandem helfen, Prost!
Ich hatte das Problem auch mit ActiveX-Listboxen und fand Folgendes an anderer Stelle, und es scheint bisher zu funktionieren, und es scheint auch die bei weitem einfachste Lösung, die bei der Übergabe der Tabelle an jemanden weitergegeben wird:
"Während die ListBox über eine IntegralHeight-Eigenschaft verfügt, deren Nebeneffekt einer FALSE-Einstellung dazu führt, dass das Steuerelement nicht schief läuft, und während Befehlsschaltflächen Eigenschaften wie Verschieben/Größe mit Zellen usw. haben, sind andere Steuerelemente nicht so elegant."
Und sie haben einige weitere Ratschläge: http://www.experts-exchange.com/articles/5315/Handhabung-mit-unintended-Excel-Active-X-resizing-quirks-VBA-code-simulate- Selbstkorrektur.html