web-dev-qa-db-fra.com

Le bouton Excel est redimensionné après avoir cliqué dessus

Comment puis-je empêcher un bouton de redimensionner? Chaque fois que je clique sur le bouton, la taille du bouton ou la taille de la police change. 

Remarque: je ne peux pas verrouiller ma feuille, car ma macro y écrira. 

La taille automatique est désactivée. Je lance Excel 2007 sur Windows 7 (64 bits).

12
user668338

J'utilise ce qui suit pour ListBoxes. Même principe pour les boutons; adapter selon les besoins.

Private Sub myButton_Click()
    Dim lb As MSForms.ListBox
    Set lb = Sheet1.myListBox

    Dim oldSize As ListBoxSizeType
    oldSize = GetListBoxSize(lb)

    ' Do stuff that makes listbox misbehave and change size.
    ' Now restore the original size:
    SetListBoxSize lb, oldSize
End Sub

Ceci utilise le type et les procédures suivants:

Type ListBoxSizeType
    height As Single
    width As Single
End Type

Function GetListBoxSize(lb As MSForms.ListBox) As ListBoxSizeType
    GetListBoxSize.height = lb.height
    GetListBoxSize.width = lb.width
End Function

Sub SetListBoxSize(lb As MSForms.ListBox, lbs As ListBoxSizeType)
    lb.height = lbs.height
    lb.width = lbs.width
End Sub

J'ai ajouté du code à la fin de la onClick ainsi:

CommandButton1.Width = 150
CommandButton1.Height = 33
CommandButton1.Font.Size = 11

Semble travailler.

J'ai eu le problème d'une manière légèrement différente. En ouvrant le classeur sur l’écran principal de mon ordinateur portable, puis en le déplaçant sur mon grand moniteur. Même cause fondamentale, je suppose.

3
TObyFish

(Excel 2003)

Il me semble qu'il y a deux problèmes différents: - redimensionner le texte d'un bouton en cliquant dessus (mais pas toujours, je ne sais pas pourquoi), et - changer la taille de ALL boutons, lorsque vous ouvrez le classeur sur un écran avec une résolution différente (qui subsiste même lorsque vous revenez sur l’affichage initial).

En ce qui concerne le problème de redimensionnement individuel: j’ai trouvé qu’il suffisait de modifier une dimension du bouton pour le "rajeunir". Tels que:

 myButton.Height = myButton.Height + 1
 myButton.Height = myButton.Height - 1

Vous pouvez le mettre dans le sous-clic de chaque bouton ("myButton_Click") ou l'implémenter Une Classe personnalisée pour l'événement "onClick".

1
Aeggie78

Vu ce numéro dans Excel 2007, 2010 et 2013

Ce code empêche le problème de se manifester. Le code doit être exécuté chaque fois qu'un objet X actif est activé.

Sub Shared_ObjectReset()

    Dim MyShapes As OLEObjects
    Dim ObjectSelected As OLEObject

    Dim ObjectSelected_Height As Double
    Dim ObjectSelected_Top As Double
    Dim ObjectSelected_Left As Double
    Dim ObjectSelected_Width As Double
    Dim ObjectSelected_FontSize As Single

    ActiveWindow.Zoom = 100

    'OLE Programmatic Identifiers for Commandbuttons = Forms.CommandButton.1
    Set MyShapes = ActiveSheet.OLEObjects
    For Each ObjectSelected In MyShapes
        'Remove this line if fixing active object other than buttons
        If ObjectSelected.progID = "Forms.CommandButton.1" Then
            ObjectSelected_Height = ObjectSelected.Height
            ObjectSelected_Top = ObjectSelected.Top
            ObjectSelected_Left = ObjectSelected.Left
            ObjectSelected_Width = ObjectSelected.Width
            ObjectSelected_FontSize = ObjectSelected.Object.FontSize

            ObjectSelected.Placement = 3

            ObjectSelected.Height = ObjectSelected_Height + 1
            ObjectSelected.Top = ObjectSelected_Top + 1
            ObjectSelected.Left = ObjectSelected_Left + 1
            ObjectSelected.Width = ObjectSelected_Width + 1
            ObjectSelected.Object.FontSize = ObjectSelected_FontSize + 1

            ObjectSelected.Height = ObjectSelected_Height
            ObjectSelected.Top = ObjectSelected_Top
            ObjectSelected.Left = ObjectSelected_Left
            ObjectSelected.Width = ObjectSelected_Width
            ObjectSelected.Object.FontSize = ObjectSelected_FontSize

        End If
    Next

End Sub
1
user6645884

Ancien problème, mais semble toujours être un problème pour ceux d’entre nous qui sommes bloqués dans Excel 2007. Avait le même problème avec ActiveX Listbox Object et étendrait sa taille à chaque nouveau calcul. La propriété LinkCells recherchait une plage dynamique (offset) pour ses valeurs. La restructuration de manière à ce qu’elle apparaisse dans une fourchette normale a résolu mon problème.

0
Colin Miles

J'ai eu ce problème avec Excel 2013. Tout pour bien fonctionner pendant longtemps et tout à coup, quand j'ai cliqué sur le bouton (ActiveX), il est devenu plus grand et la police est devenue plus petite en même temps.

Sans enregistrer le fichier, j'ai redémarré mon ordinateur et rouvert le même fichier Excel et tout va bien à nouveau.

0
Hau

Avez-vous une commande de sélection dans la macro de boutons?

Peu de temps après avoir renommé certaines cellules d'une feuille de calcul, y compris celle que le bouton bascule sélectionne après sa fonction de basculement, la taille de la police est réduite. J'ai résolu ce problème en m'assurant que Range ("..."). Sélectionnez inclus le nouveau nom de la cellule, pas les coordonnées.

0
Zsombor

Utilisez un bouton Formulaires plutôt qu'un bouton ActiveX. Les contrôles ActiveX se comportent mal de manière aléatoire sur les feuilles.

0
SWa

J'ai rencontré le même problème avec les boutons ActiveX et les rotations dans Excel en redimensionnant et en déplaçant. Il s’agissait d’une feuille de calcul partagée utilisée sur plusieurs ordinateurs portables et écrans de PC. Comme il était partagé, je ne pouvais pas utiliser de macros pour repositionner et redimensionner automatiquement dans le code.

En fin de compte, après avoir cherché une solution et essayé tous les réglages possibles des boutons. J'ai trouvé que le regroupement des boutons résolvait le problème immédiatement. Les commandes, les boutons, les fileuses restent en place. J'ai testé cela pendant une semaine et aucun problème. Il suffit de sélectionner les contrôles, clic droit et groupe - travaillé comme par magie.

0
Michael Madigan

Trouvé le même problème avec Excel 2016 - a été en mesure de corriger en modifiant la hauteur du bouton de contrôle, en le rétablissant, puis en sélectionnant une cellule sur la feuille. Le redimensionnement n'a pas toujours fonctionné correctement. Exemple ci-dessous pour un bouton de commande (cmdBALSCHED)

Public Sub cmdBALSCHED_Click()

Sheet3.cmdBALSCHED.Height = 21
Sheet3.cmdBALSCHED.Height = 20
Sheet3.Range("D4").Select

Cela ramènera la hauteur à 20 et la police de boutons à celle trouvée.

0
Mike Repko

Cela se produit lorsque la résolution de l'écran/les paramètres changent après l'ouverture d'Excel.

Par exemple:

  1. Ouvrez un classeur comportant un bouton
  2. Connectez-vous avec Remote Desktop depuis un ordinateur avec une taille d'écran différente
  3. Cliquez sur le bouton => la taille du bouton changera

La seule solution que j'ai trouvée consiste à fermer Excel et à le rouvrir avec les nouveaux paramètres d'écran. Toutes les instances d'Excel doivent être fermées, y compris toute instance invisible exécutée par d'autres processus sans interface doit être supprimée.

0
stenci

Le mien redimensionné après l'impression et le changement de zoom redessine l'écran et le fixe

ActiveWindow.Zoom = 100
ActiveWindow.Zoom = 75
0
Moz