Question

De temps en temps, je vais dans une feuille de calcul arrive qui souffre de boutons magiques ou listboxes qui obtiennent plus ou moins important au fil du temps.

Rien dans le code est instruisait cela.

Quelqu'un at-il autre connu cette joie?

Était-ce utile?

La solution

Le problème semble se rapporter à la façon dont Windows gère les résolutions non natives sur les moniteurs et peut être évité de plusieurs façons

Le problème peut être un cauchemar quand il arrive, mais il arrive que par intermittence.

Nous avons testé récemment une feuille de calcul Excel utilisée par quelques dizaines de personnes et nous avons développé une bonne idée de la cause et des solutions possibles.

La cause semble se rapporter à une configuration où les écrans sont utilisés dans autre chose que leur résolution native. Cela peut se produire facilement si un utilisateur se connecte un moniteur externe sur un ordinateur portable et ne choisit pas la configuration de l'écran résultant soigneusement. Par exemple, si un ordinateur portable est branché sur un projecteur (peut-être un ancien avec 1024 natif par 768), mais l'ordinateur portable est un 1280 par 800 et l'utilisateur choisit de double l'écran plutôt que < strong> extension il (paramètres « se connecter à un projecteur » ou « affiche » panneau de commande dans Windows 7), le résultat est une image imprévisible et généralement peu satisfaisante sur les deux écrans à la fois dans des résolutions non natives. Nous avons trouvé que ces paramètres presque toujours causer de sérieux problèmes avec les boutons Excel, en particulier les contrôles ActiveX. Parfois, sur les clics répétés, ils se rétractent à l'illisibilité; d'autres fois, ils étendent pour couvrir tout l'écran.

La plupart du temps, quand nous demandons aux utilisateurs d'utiliser le étendre réglage de l'affichage et le résultat est deux écrans à la fois en utilisant des résolutions natives, on ne voit pas le problème.

Il existe aussi des moyens à base de code pour minimiser le problème. Nous avons essayé de réinitialiser l'emplacement et la taille des boutons et des contrôles quand ils ont été cliqués (ce qui ajoute beaucoup de code fastidieux si vous avez beaucoup de boutons). Cela a parfois travaillé. Nous avons également essayé de basculer la propriété autosize de true à false et retour (cela fonctionne manuellement en mode développeur) et cela résout plusieurs instances, mais apparemment pas tout.

Autres conseils

trouvé la cause d'être des gens ouvrant la spreasheet sur une machine accessible via le Bureau à distance, et qu'il y ait une différence dans la résolution de l'écran entre les machines locales et distantes. Cela affecte les commandes disponibles à partir de la boîte à outils de contrôle, mais pas encore l'expérience de la question en utilisant un vieux bouton de contrôle des formulaires scolaires, donc ma réponse insatisfaisante est d'utiliser.

Cela a été me affligent depuis des années, et hors tension. Il y a un certain nombre de corrections autour, mais ils semblent hasardeux. Il était toujours en cours dans Excel 2010 (me arrive à mai 2014), et se produit encore dans Excel 2013 par certains rapports. La meilleure description que j'ai trouvé que ma situation correspond au moins (Excel 2010, pas RDP impliqué, pas Aperçu avant impression impliquée) est ici:

Microsoft Excel support Team Blog: les contrôles ActiveX et formulaire se redimensionne lorsque vous cliquez dessus ou en faisant un aperçu avant impression (dans Excel 2010)

(Cela pourrait ne pas aider pour les utilisateurs d'Excel 2013 Désolé)

EDIT: Ajout de détails en cas de lien technet va jamais mort, l'article technet dit:

ABORD installer Microsoft correctif 2598144 pour Excel 2010 , disponible: ici .

SECOND, si votre symptôme est « Un bouton change ActiveX à la taille incorrecte après avoir cliqué sur dans une feuille de calcul Excel 2010 », vous devez:

  • Cliquez sur Démarrer, cliquez sur Exécuter, tapez regedit dans la zone Ouvrir, puis cliquez sur OK.
  • Recherchez et sélectionnez la sous-clé de Registre suivante HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 14.0 \ Excel \ Options
  • Dans le menu Edition, pointez sur Nouveau, puis cliquez sur Valeur DWORD (32 bits).
  • Tapez LegacyAnchorResize, puis appuyez sur Entrée.
  • Dans le volet Détails, cliquez droit sur LegacyAnchorResize, puis cliquez sur Modifier.
  • Dans la zone Données de la valeur, tapez 1, puis cliquez sur OK.
  • Quittez l'Éditeur du Registre.

OU AUTRE PART, si votre symptôme est « Un contrôle de formulaire de bouton est affiché de manière incorrecte dans un classeur après vous affichez l'aperçu avant impression du classeur dans Excel 2010 », vous devez:

  • Cliquez sur Démarrer, cliquez sur Exécuter, tapez regedit dans la zone Ouvrir, puis cliquez sur OK.
  • Recherchez et sélectionnez la sous-clé de Registre suivante: HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 14.0 \ Excel \ Options
  • Dans le menu Edition, pointez sur Nouveau, puis cliquez sur Valeur DWORD (32 bits).
  • Tapez MultiSheetPrint, puis appuyez sur Entrée.
  • Dans le volet Détails, cliquez droit sur MultiSheetPrint, puis cliquez sur Modifier.
  • Dans la zone Données de la valeur, tapez 1, puis cliquez sur OK.
  • Sélectionnez le nouveau sous-clé de Registre suivante: HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 14.0 \ Excel \ Options
  • Dans le menu Edition, pointez sur Nouveau, puis cliquez sur Valeur DWORD (32 bits).
  • Tapez LegacyAnchorResize, puis appuyez sur Entrée.
  • Dans le volet Détails, cliquez droit sur LegacyAnchorResize, puis cliquez sur Modifier.
  • Dans la zone Données de la valeur, tapez 1, puis cliquez sur OK.
  • Quittez l'Éditeur du Registre.

OU AUTRE PART, si votre symptôme est « Un bouton ActiveX est modifiée à une taille incorrecte dans une feuille de calcul Excel 2010 après vous affichez l'aperçu avant impression de la feuille de calcul », vous devez:

  • Cliquez sur Démarrer, cliquez sur Exécuter, tapez regedit dans la zone Ouvrir, puis cliquez sur OK.
  • Recherchez et sélectionnez la sous-clé de Registre suivante: HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 14.0 \ Excel \ Options
  • Dans le menu Edition, pointez sur Nouveau, puis cliquez sur Valeur DWORD (32 bits).
  • Tapez LegacyAnchorResize, puis appuyez sur Entrée.
  • Dans le volet Détails, cliquez droit sur LegacyAnchorResize, puis cliquez sur Modifier.
  • Dans la zone Données de la valeur, tapez 1, puis cliquez sur OK.
  • Quittez l'Éditeur du Registre.

Bonne chance. Ce problème est une douleur ...

Ce problème est en fait due à la résolution de l'écran. Le plus souvent il se produit lorsque l'utilisateur se connecte à un projecteur ou WebEx tout en utilisant l'application Excel.

Une solution simple à ce problème consiste à demander à l'utilisateur de redémarrer leur machine sans connexions périphériques (projecteur) puis ouvrir à nouveau l'application Excel.

Les corrections évoquées plus haut, le redimensionnement / repositionnement programatically les contrôles Active X après les événements de clic, ou la modification du Registre (avec le mot D LegacyAnchorResize), n'a pas résolu le problème pour moi avec Excel 2010 / Windows 7 64 bits.

La solution pour moi a été trouvé ici: https://support.microsoft.com/ fr-fr / kb / 838006

Pour Excel 2010 le lien INVITE A:

  1. Quitter tous les programmes en cours d'exécution.
  2. Cliquez sur Démarrer, cliquez sur Exécuter, dans la zone Ouvrir, tapez regedit puis cliquez sur OK.
  3. Recherchez, puis cliquez sur la clé de Registre suivante:
  4. HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 14.0 \ Common
  5. Dans le menu Edition, pointez sur Nouveau, puis cliquez sur Clé.
  6. Draw Type, puis appuyez sur Entrée.
  7. Dans le menu Edition, pointez sur Nouveau, puis cliquez sur Valeur DWORD.
  8. Tapez UpdateDeviceInfoForEmf, puis appuyez sur Entrée
  9. Faites un clic droit UpdateDeviceInfoForEmf, puis cliquez sur Modifier. 10.In la zone Données de la valeur, tapez 1, puis cliquez sur OK.
  10. Dans le menu Fichier, cliquez sur Quitter pour fermer l'Éditeur du Registre.

pourrait-il que le bouton est défini pour coller aux coins d'une cellule, au lieu de flotter librement?

Vérifier avec

Format | propriétés | Positionnement d'objets

et choisissez autre chose que « déplacer et la taille des cellules »

Mes moniteurs semblent tous être fixés à des résolutions natives, ce qui approfondit le mystère. Cependant, j'ai trouvé que faire quelque chose au bouton (déplacement ou le redimensionnement) fixe en quelque sorte le problème. Cette routine automatise le déplacement, et restaure ensuite le réglage d'origine.

Le code suivant semble résoudre le problème, au moins pour les boutons.

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

Invoke comme suit:

Private Sub MyButton_Click()
    StablizeButton MyButton

    ' Remainder of code.
End Sub

Je l'ai eu ce problème plusieurs fois et je l'ai fait résoudre ce qui suit:

  1. Rechercher dans mon lecteur C: \ pour tout fichier avec l'extension '.exd'
  2. Supprimer ces fichiers (il est correct de le faire)
  3. Mettre en œuvre le code que les objets redimensionne l'ActiveX à chaque fois que la feuille est ouverte

J'ai trouvé ce problème a été causé tout ce que nous l'ordinateur portable branché sur un projecteur et enregistré le fichier. Ensuite, chaque fois que la question a été soulevée, je suis allé simplement les étapes successives 1. et 2. et mes objets ActiveX comportions à nouveau

Nous venons de régler cela sur un niveau de l'entreprise en ajoutant le module suivant à tous les classeurs macro activé:

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

Il suffit de les appeler au début et à la fin de votre code comme ceci:

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

fil vieux mais j'avais cette question et résolu en premier regroupement le, dans mon cas, des boutons d'option ainsi que éprouvaient la question alors simple réglage (remise à zéro) la taille de ce groupe dans un Auto_Open en tant que tel:

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

[EXCEL PLUS PROFESSIONNEL 2016, 32bits, VERSION 1802, CONSTRUIRE 9029,2167]

Je faisais la même question et Je pouvais résoudre le problème en personnalisant l'échelle d'affichage dans les fenêtres 10, 64 bits. Il est extremelly simple et cela fonctionne pour un seul utilisateur. Il suffit de suivre les instructions ci-dessous et vous aurez tous les contrôles de formulaire, des formes de feuilles, des figures et des contrôles ActiveX à leur taille d'origine. Pas besoin de coder ou faire de pointe supercherie / magie / hacks. Si le lien fourni est cassé, il suffit de répéter ces étapes.

  1. pour ne pas afficher échelle personnalisée dans Windows 10, vous devez faire ce qui suit.

    Paramètres ouverts.

  2. Allez dans Paramètres -. Affichage
  3. Sur la gauche, cliquez sur le lien Mise à l'échelle personnalisée sous la rubrique « L'échelle et la mise en page ».
  4. la mise en page personnalisée sera ouverte. Spécifiez une nouvelle valeur pour mise à l'échelle pour cent. [USE 100] !! ... et voilá. Fermez et ouvrez Excel.

Il est un ancien poste, mais j'espère que cela aide quelqu'un qui traite ce problème Excel ennuyeux et soulignant.

https://winaero.com/blog/set- affichage-DETARTRE-fenêtres sur mesure-10 /

Ce problème est très frustrant, mon expérience est que les propriétés sont généralement définies correctement sur les objets ActiveX. J'ai modifié une UDF de ci-dessus pour simplement être en mesure de fonctionner sur une feuille active, cela va créer tout remettre comme avant le rétrécissement.

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

Je cours à travers cette question tout le temps dans Excel 2010 (Ce qui me ramène toujours à ce fil) et bien que je ne l'ai pas trouvé une solution 100%, je crois avoir quelques informations qui peuvent aider les autres.

Alors que fastidieusement jouer avec les boutons que j'ai découvert que les événements différents pour chaque objet étaient à l'origine des problèmes différents. Par exemple,

  • Bouton A - La taille du bouton se contracterait sur l'événement MouseDown
  • Bouton B -. Le texte élargirait l'événement MouseMove (mais seulement après que le bouton a été cliqué AKA, je clique sur un bouton, le code exécute, laissez la souris en vol stationnaire sur le bouton, puis dès que je déplace la souris le texte élargirait)
  • boîte d'entrée de texte A - Le texte élargirait l'événement MouseUp
  • zone de saisie de texte B - Le texte élargirait l'événement LostFocus

La seule solution qui fonctionne pour moi d'écrire du code pour réinitialiser la taille / texte pour chaque événement d'objet qui a été à l'origine du redimensionnement aléatoire. Comme si ...

Où MaterialNum est le nom de la boîte d'entrée et MouseDown est l'événement ...

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

En plus, je devais changer quelques options Format de contrôle (objet Clic droit> Format de contrôle):

  • onglet Taille: boîte Proportionnelle est cochée
  • onglet Propriétés: Imprimer zone Objet est décochée

En outre, dans le volet Propriétés de l'objet (clic droit objet> Propriétés) Je mis TakeFocusOnClick false

Oui, cela prend du temps et fastidieux car il doit être fait avec chaque objet, mais il est la seule solution qui fonctionne pour moi (Et il semble être une solution plus rapide que d'attendre Microsoft pour résoudre ce problème! !!) . Espérons que cela aide les autres.

J'espère que d'autres il été utile

J'ai remarqué qu'aucune de ces réponses ancrer le contrôle à une ligne et colonne spécifique. Cela a fonctionné assez propre pour moi comme les lignes / colonnes ont tendance à être plus prévisible que la résolution de moniteurs.

L'exemple ci-dessous essentiellement « mesures » où l'objet doit aller, puis fixe là dans le code Worksheet_Activate. Dans l'exemple ci-dessous, le bouton sera toujours accrocher à couvrir D8:F10.

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

Le résultat apparaît comme indiqué ci-dessous:

Il est très bizarre. Les propriétés largeur et hauteur ne rétrécissent pas lorsqu'il est interrogé (en code ou en utilisant la feuille de propriétés), mais apparemment ils changent.

I remarqué que si j'utilise la feuille de propriétés et de modifier la largeur de la 15 norme à, disons, 14 et puis de nouveau à 15, on le fixe.

Le code ci-dessous fonctionne pour moi (et a un effet visuel amusant sur la feuille: vous cliquez, il se rétrécit, l'écran scintille, et il se développe en arrière)

.

MY SOLUTION dans le code (l'événement de clic pour la case à cocher):

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

Après recherche sur le net, il coutures la meilleure solution est de sauver le fichier en tant que .xlsb (binaire) plutôt que .xlsm

Ce que je commencé à faire un certain temps était d'avoir un seul sous qui définit la taille de tous mes contrôles. Je peux alors exécuter ce sous un point quelconque dans le code où les contrôles ou rétrécissent se développent. Il est parfois beaucoup de travail supplémentaire tatillon, mais il garde mes boutons de manger ma feuille de calcul.

Je n'ai pas testé, mais je suppose que cela a à voir avec la propriété zoom (peut-être ajouter activewindow.Zoom = false).

peut également faire une boucle sur des formes wich définit .Placement = xlMove sur Workbook_Open et window_activate, ceci pour éviter des formes de redimensionner avec des cellules (mais se déplacera avec eux).

J'utilise Excel 2013 et n'a jamais eu ce problème, je ne l'utilise aussi à distance ..., juste essayer d'aider avec de petites idées

j'ai trouvé une solution: « assurez-vous que toutes les formes sur la feuille de calcul ont des noms uniques » (y compris les cases à cocher / boutons radio (contrôles OLE) ainsi que des photos et d'autres types de forme ... )

Parce que le problème est intermittent, je ne peux pas garantir. J'ai deux formes de travail en utilisant bien maintenant ce correctif, mais « deux » est un ensemble très petit échantillon, et pourrait juste être une coïncidence. Jamais moins, ce sont des étapes de mon travail:

J'énuméré toutes les formes de la feuille de problème (wsForm) sur une feuille vierge (Feuille1):

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

I a ensuite compté le nom de chaque forme dans la colonne A, en utilisant une formule dans la colonne G:

= COUNTIF ($ A $ 2: $ 120 $ A, A2)

Régler toute évidence plage en fonction ... Vous pouvez ensuite filtrer sur toutes les formes qui ne disposent pas d'un « 1 » dans cette colonne. La « cellule en bas à droite » vous aide à trouver la forme de votre feuille de calcul: renommer en sélectionnant la forme, puis en entrant une nouvelle valeur unique dans le nom / boîte de référence en haut à gauche d'Excel.

Cette liste de forme également aidé à trouver des formes « mortes » (0 hauteur ou largeur 0) qui ont été oubliés depuis longtemps et inutilisé.

J'espère que cela fonctionne pour vous! Pour cette question ... J'espère que cela fonctionne pour moi pour les événements à venir ...

Si vous souhaitez ne pas afficher le bouton qui va et vient, vous pouvez mettre le placement original dans votre code, puis il suffit de cocher contre ceux-ci. Désactivez la mise à jour de l'écran lorsque le bouton est cliqué, vérifiez si le placement est différent sur le contrôle, la rétablir, le cas échéant, la mise à jour écran tourner en arrière sur

DP

Après avoir essayé plusieurs des solutions à ce sujet et les messages connexes, j'ai découvert que la solution à un autre problème que Microsoft avait affiché également travaillé de manière fiable pour cette question particulière lorsqu'elle est appliquée d'une manière particulière, au moins dans le contexte que je suis travailler au sein. J'ai vécu ces problèmes dans un natif de résolution aux ordinateurs portables que nous avons ici et sur un PC chaque fois que je passe à une résolution non native. A savoir, les boutons de chargement à plus grande que la taille normale, obtenir plus quand on clique dessus, et le texte et les images dans ces boutons rétrécissement (et au moins le paramètre pour le texte est resté le même, donc je ne voyais aucune façon de changer de nouveau programme ou autrement.) Ceux-ci ont pas des problèmes intermittents dans mon cas. J'ai eu des problèmes intermittents mais après avoir utilisé l'aperçu avant impression que Microsoft a posté une solution pour ici . J'ai essayé cela et il semble fonctionner.

La solution: Pour Excel, fermez l'application et supprimez le fichier MSForms.exd de C:\Users{UserName}\AppData\Local\Temp\Excel8.0 alors que dans la résolution que vous souhaitez afficher les boutons Vous pouvez également rechercher d'autres fichiers .exd dans votre dossier AppData locale \ Temp. pour d'autres applications Office.

Comme je l'ai mentionné, il est une solution proposée par Microsoft pour une autre question - où les boutons cessent de fonctionner après les mises à jour décembre '14 sont installés.

Le regroupement des commandes semble fonctionner pour moi. J'upvote ou des commentaires, mais SO ne me laisse pas. Notez que ce problème arrive souvent si vous utilisez l'échelle d'affichage W8 et un ordinateur portable à haute résolution et écran plus.

J'ai trouvé ce problème dans tous les objets (boutons, zones de texte, etc.). Lorsque j'imprime / impression des feuilles de plusieurs d'aperçu, toutes les feuilles sauf pour la première dans la séquence ont déplacé ou objets redimensionnée. Après beaucoup d'essais, la solution la plus simple à la page zoom vers le haut ou vers le bas et revenir au réglage d'origine.

Je trouve que le problème ne semble se produire lorsque les vitres de gel est activé, qui sera normalement dans la plupart des applications que vous placerez vos boutons de commande, etc dans un endroit où ils ne défilent pas de vue.

La solution qui a travaillé pour soit est de regrouper les contrôles, mais aussi veiller à ce que le groupe dépasse la zone Figer les volets. Je le fais en ajoutant un contrôle en dehors de la zone Figer les volets, l'ajouter dans le groupe, mais cache aussi le contrôle de sorte que vous ne le voyez pas.

Maintenant, en utilisant Excel 2013 et cela se produit chaque fois que je tends mon écran pendant que Excel est en cours d'exécution (et chaque fois que je supprimer l'extension).

Le correctif j'ai commencé la mise en œuvre est à l'aide des liens hypertexte au lieu des boutons et un pour ouvrir un userform avec tous les autres contrôles activeX sur.

Ajoutez ce code dans un fichier .reg. Double-cliquez sur et puis confirmez. Redémarrez Excel.

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

Essayez de changer le réglage du zoom à 100% à l'aide du curseur en bas à droite. Fixe pour moi sur les deux moniteurs de différentes tailles.

J'ai trouvé une solution qui fonctionne, et résout le problème pour un seul utilisateur. Si vous ne voulez pas lire mon petit coup de gueule, vous pouvez passer directement à la solution.

RANT:

J'ai EPROUVE ce problème stupide depuis les dinosaures. En attendant, Microsoft a eu beaucoup de ressources pour libérer d'innombrables mises à jour importantes à la suite Office et pourtant ce problème va sans adresse. Il est tout à fait exaspérant. Je n'ai aucune raison que ce soit de mettre à jour quand des choses de base comme cela ne fonctionne pas. Il y a sûrement quelqu'un à MS utilise des contrôles ActiveX dans Excel à droite sur un écran haute résolution, non?

Je n'ai pas eu ce problème sur mon PC de bureau, pas la moindre idée de pourquoi, mais sur ma surface Pro 4 mes contrôles ActiveX go bananes chaque fois que je cliquez dessus.

Aujourd'hui, j'ai décidé d'aller au fond de cela. Je cherchai haute et basse, essayé toutes les solutions proposées sur divers forums (dont aucun ne fonctionne par ailleurs). Peu importe si les commandes sont groupées ou non, verrouillés ou non, correctif installé ou non.

Hier j'ai eu un autre problème avec les choses se conduit mal dans une autre application appelée Traktor (logiciel DJ), où les contrôles seraient sauter lorsque l'échelle d'affichage a été réglé sur une valeur qui n'était pas un multiple exact de 100%. Un utilisateur a trouvé la solution était de modifier le mode de compatibilité pour cette application. Donc, je l'ai fait la même chose pour Excel, et cela a fonctionné! Maintenant, mes contrôles restent en place, quelle que soit la résolution d'affichage et mise à l'échelle.

SOLUTION:

(Assurez-vous d'Excel ne fonctionne pas)

  1. Localiser EXCEL.EXE (sur mon système, cela peut être trouvé dans C: \ Program Files \ Microsoft Office \ Office16 \ EXCEL.EXE)
  2. Renommer "EXCEL.EXE" à "_EXCEL.EXE" (changer fondamentalement à autre chose)
  3. Faites un clic droit fichier Excel.exe renommé, puis passez à l'onglet Propriétés> Compatiblité> section Paramètres
  4. Définir priorité haute comportement de mise à l'échelle DPI = Activé, et mise à l'échelle effectuée par = Application
  5. Cliquez sur OK
  6. Renommer "_EXCEL.EXE" sur "EXCEL.EXE"

Excel fonctionne à sa résolution native et les contrôles ActiveX ne se dérégler. Le seul inconvénient est que Excel ne répond pas à l'échelle de l'écran, donc les choses peuvent sembler un peu plus petit que l'on voudrait. Sur ma surface Pro 4 est plus acceptable

NOTES:

1) les étapes 2 et 6 sont nécessaires avec Excel 2016, parce que le dialogue des propriétés EXCEL.EXE n'offre pas l'onglet Compatibilité. Après changement de nom, l'onglet devient disponible.

2) Cette solution ne fonctionne que sur une base d'un utilisateur. Autrement dit, si vous envoyez un fichier Excel contenant les contrôles ActiveX à vos collègues, les contrôles ActiveX ne seront pas afficher correctement sur leur système, à moins qu'ils changent les paramètres du mode de compatibilité.

3) Après avoir appliqué ce hack, les fichiers Excel précédemment corrompus semblent se fixer lorsque vous les ouvrez, avec tous les contrôles récupérer leurs dimensions d'origine prévues.

S'il vous plaît tester et commenter, j'espère que cela peut aider quelqu'un, cheers!

J'ai le même problème parfois. Dans mon cas, je pourrais reproduire 100% sur un fichier, mais il était incompatible sur un fichier pratiquement identique. J'ai aussi trouvé l'erreur de taille n'a pas été permanente - je pourrais enregistrer et rouvrir le fichier pour restaurer l'apparence du bouton. Je pourrais aussi créer une nouvelle fenêtre, puis jetez-la fenêtre endommagée. J'utilise une seule configuration du moniteur.

Pour moi, le bouton redimensionnée quand j'accédé HPageBreaks collection de la feuille. J'ai pu éviter le problème en modifiant temporairement la vue de la fenêtre comme suit:

ActiveWindow.View = xlPageBreakPreview
  ' do pagination stuff using HPageBreaks
ActiveWindow.View = xlNormalView
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top