2017-08-04 1 views
3

Je voudrais avoir la boîte de commentaire adapter les commentaires juste (aucun espace supplémentaire au fond).Redimensionner les commentaires d'excel pour adapter le texte avec la largeur spécifique

Je sais qu'il est le .AutoSize mais je veux la largeur maximale à 300

Voici le code que j'ai,

For Each mycell In myRng.Cells 
    If Not (mycell.Comment Is Nothing) Then 
     With mycell.Comment.Shape 
     .TextFrame.AutoSize = True 
     If .width > 300 Then 
      lArea = .width * .height 
      .width = 300 
      .height = (lArea/300) 
     End If 
     End With 
    End If 
Next mycell 

mycell et myRng sont Range types de données, lArea est longue. Maintenant, cela fonctionne relativement bien mais laisse un espace supplémentaire au bas d'un certain nombre de commentaires, car la zone occupée par le texte AutoSize est différente de la zone de la zone de commentaire AutoSized.

Existe-t-il un moyen de vérifier l'espace vide dans un commentaire, puis de le couper? Ou est ce que je vais avoir de mieux?

+0

Peut-être essayer '... comment.Text = trim (... Commentaire.Texte) '? – BruceWayne

+0

J'ai eu un problème similaire et l'ai résolu en écrivant une routine de retour à la ligne. Ainsi, le commentaire est de taille automatique et aucun espace vide supplémentaire en bas; et la largeur est limitée. –

Répondre

2

essayer ce ... commentaire test a été placé dans la cellule E4

découvert en mettant Range("e4").Comment.Shape.TextFrame dans la fenêtre Espion

Sub testComment() 

    With Range("e4").Comment.Shape 

     .TextFrame.AutoSize = True 

     lArea = .Width * .Height 

     .Width = 300 
     .Height = (lArea/.Width)  ' used .width so that it is less work to change final width 

     .TextFrame.AutoMargins = False 
     .TextFrame.MarginBottom = 0  ' margins need to be tweaked 
     .TextFrame.MarginTop = 0 
     .TextFrame.MarginLeft = 0 
     .TextFrame.MarginRight = 0 
    End With 
End Sub