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).
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.
(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".
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
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.
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.
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.
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.
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.
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.
Cela se produit lorsque la résolution de l'écran/les paramètres changent après l'ouverture d'Excel.
Par exemple:
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.
Le mien redimensionné après l'impression et le changement de zoom redessine l'écran et le fixe
ActiveWindow.Zoom = 100
ActiveWindow.Zoom = 75