2009-04-11 5 views
0

EDIT:VBA dans Excel ignare dans le besoin: réglage Cell.RowHeight change la valeur de la cellule à VRAI ou FAUX?

Cela se produisait car la cellule était définie sur la propriété LinkedCell du bouton. Quand je mets ça à zéro tout fonctionne bien (bien sûr, j'utilisais cette propriété, mais bon).

Impossible de trouver quoi que ce soit sur ce via Google ...

J'ai une cellule qui contient une bonne quantité de texte dans une colonne assez étroite. Je voudrais avoir un bouton utilisé pour étendre/rétracter la hauteur de la cellule quand elle est poussée (vous savez, "Show" et "Hide"). La chose est, chaque fois que je définis la propriété RowHeight de la cellule, la valeur de la cellule est définie sur TRUE ou FALSE. Quelqu'un peut-il m'éclairer pour savoir pourquoi cela est?

BTW, j'utilise Excel 2003.

Private Sub ToggleButton1_Click() 
    new_caption = ToggleButton1.Caption 
    Dim height As Integer 
    If new_caption = "Show" Then 
     new_caption = "Hide" 
     height = 125 
    Else 
     new_caption = "Show" 
     height = ToggleButton1.height 
    End If 
    ToggleButton1.Caption = new_caption 
    Range(ToggleButton1.LinkedCell).RowHeight = height 
End Sub 
+0

@Ed, votre mise à jour (ou de revenir comme je le vois maintenant) montre en effet le problème - voir ma réponse mise à jour pour l'explication et une solution possible. – paxdiablo

Répondre

1

Cela fonctionne bien pour moi, bien que j'utilise Office XP plutôt que 2003. Êtes-vous sûr que ce code (ou seulement le code) qui est en cours d'exécution pour ce bouton?

Il définit correctement la hauteur mais ne change pas du tout le contenu de la cellule.

J'ai essayé cela comme une macro pilotée par une touche et un bouton de commande sur la feuille sans problème.

MISE À JOUR:

En fonction de votre édition où vous déclarez que vous utilisez LinkedCell pour trouver la cellule de votre bouton, je ne pense pas que votre utiliser correctement. LinkedCell lie la valeur de la cellule à la valeur du contrôle.

Qu'est-ce qui se passe lorsque vous appuyez sur le bouton est que sa valeur est définie à une valeur booléenne (éventuellement vrai lorsque pressé puis faux lors de la libération, je ne sais pas à coup sûr). Parce que ceci est lié à une cellule, la valeur des cellules change également en valeur de bouton. Vous devez trouver une manière différente de "lier" le bouton à la cellule. Ma première pensée serait de lier à la cellule B1 de sorte que vos valeurs soient en A1, A2, A3, ... (appelons-les Axe) et vos boutons de contrôles sont (et liés à) Bx et don N'utilisez pas Bx pour autre chose (les boutons apparaîtront probablement au-dessus d'eux de toute façon).

 
      A    B 
    +--------------------+--------+ 
1 | Long text which is | [Hide] | 
    | wrapped because |  | 
    | the state is SHOW. |  | 
    +--------------------+--------+ 
2 | More text which is | [Hide] | 
    | wrapped because |  | 
    | the state is SHOW. |  | 
    +--------------------+--------+ 
3 | Hidden text becaus | [Show] | 
    +--------------------+--------+ 
4 | Even more text  | [Hide] | 
    | that's wrapped  |  | 
    | because the state |  | 
    | is SHOW.   |  | 
    +--------------------+--------+ 

Puis dans votre code VBA, vous pouvez toujours régler la hauteur de ligne de Bx (car elle affecte toute la ligne) et vous ne serez pas soin ce qui a été dans la cellule colonne B - La valeur de la cellule A-colonne sera laissée intacte. Ou, si vous êtes en utilisant la colonne B pour quelque chose, liez-le à ZZx (ou IVx ou quelle que soit la colonne la plus à droite est dans une rangée).

+0

J'ai édité le code de la publication d'origine qui montre où le problème est. J'ai modifié le message original. –

+0

Oui, j'ai fini par suivre le même chemin que votre dernière suggestion. Merci beaucoup, vous étiez sur place. –