Je crée un petit morceau de code VBA avec une formule spécifique, mais il dispose d'un couple de relevés alors je voulais le work le work, mais chaque fois que je définis le J'ai vérifié avec une boîte de message. Je définis le On m'a dit d'utiliser Une idée de ce que je pourrais faire mal ici? P> si code>, dont l'un est originaire d'une chaîne de double ligne (avec
VBNewline < / code>)
La question est que je ne peux pas voir le texte. P>
ActiveCell.wraptext = true code>, rien ne se passe. P>
wraptext code> sur true, je retourne la valeur de la propriété avec la messageriebonnette pour confirmer, et c'est toujours faux. P>
ActiveCell.rows.Autofit code> aussi, mais
autofit code> ne fait rien si le texte n'est pas emballé. P>
6 Réponses :
Essayez:
Sub WrapandFit() ActiveCell.WrapText = True ActiveCell.EntireRow.AutoFit End Sub
Je m'excuse, essayait seulement d'être poli depuis que l'anglais n'est pas ma langue principale. Quoi qu'il en soit, le problème se poursuit, si je place ce code dans une macro, cela fonctionne, dans la fonction qu'il ne le fait pas. (Également désolé, mais je ne suis pas très familier avec le débordement de la pile pour le moment ... pense que j'ai placé la chose anglaise commentaire au mauvais endroit.)
Si la feuille de calcul ne contient pas de données intensives, vous pouvez modifier la cellule ad a - sur votre classeur. Chaque fois qu'une cellule est modifiée, il peut appeler le code de macro pour mettre à jour la hauteur ActiveCell. Notez que si cette feuille de calcul est de quelque manière que ce soit, cela va être très lent!
UDFS (procédures utilisant la fonction mot-clé) uniquement les valeurs de retour. Ils ne peuvent pas changer d'autres parties du modèle d'objet Excel, comme le formatage des cellules. Seules les sous-programmes (procédures qui utilisent le mot-clé SUB) peuvent faire cela. P>
Vous devez avoir vos cellules correctement formatées correctement avant de saisir votre UDF. Ou vous pouvez utiliser un événement de changement de feuille de calcul sous pour les formater après le fait. P>
Désactiver / sur Word Wrand pour une ligne de feuille entière peut être effectué par code VB ci-dessous: Si la première ligne est définie true, Excel hérite de cette propriété pour une feuille entière, sauf si vous ne l'éteigniez pas spécifiquement à l'aide d'un autre code.
MyWorkSheet.Rows(8).WrapText = False
Je soupçonne que vous essayez d'envelopper du texte dans des cellules fusionnées. Si oui, vous ne pouvez pas simplement appeler: à la place, vous devez simuler les opérations d'emballage. J'ai trouvé le code de http: // blog .ContexTures.com / Archives / 2012/06/07 / AutoFIT-Fusion-Cell-Row-Hauteur / m'a aidé l'année dernière. P> Private Sub Worksheet_Change(ByVal Target As Range)
Dim MergeWidth As Single
Dim cM As Range
Dim AutoFitRng As Range
Dim CWidth As Double
Dim NewRowHt As Double
Dim str01 As String
str01 = "OrderNote"
If Not Intersect(Target, Range(str01)) Is Nothing Then
Application.ScreenUpdating = False
On Error Resume Next
Set AutoFitRng = Range(Range(str01).MergeArea.Address)
With AutoFitRng
.MergeCells = False
CWidth = .Cells(1).ColumnWidth
MergeWidth = 0
For Each cM In AutoFitRng
cM.WrapText = True
MergeWidth = cM.ColumnWidth + MergeWidth
Next
'small adjustment to temporary width
MergeWidth = MergeWidth + AutoFitRng.Cells.Count * 0.66
.Cells(1).ColumnWidth = MergeWidth
.EntireRow.AutoFit
NewRowHt = .RowHeight
.Cells(1).ColumnWidth = CWidth
.MergeCells = True
.RowHeight = NewRowHt
End With
Application.ScreenUpdating = True
End If
End Sub
J'ai eu cette question avec la hauteur de la ligne et je ne me suis pas réalisée qu'il était dû aux cellules fusionnées. Cela a résolu mon problème!
Pour moi, le code ci-dessous a fonctionné. (SEULEMENT défini pour modifier la ligne d'en-tête (changement))
ActiveSheet.Range("A1:R1").Select With Selection .WrapText = True End With
Cela peut ne pas être exactement ce que l'OP avait à l'esprit, mais je me suis dit que je partage mon VBA Retour à la ligne strong> fonction depuis que je ne pouvais pas trouver quoi que ce soit sur le web pour faire ce que je voulais.
Cet insert de fonction CR kbd> strong> + LF kbd> 's dans la chaîne afin de l'envelopper, de sorte que le mot est une pellicule maintenue si le texte est copié dans une autre application, à base de texte ou autre . P>
Function wrapText(strIn As String, Optional maxLen As Long = 110) As String Dim p As Long: wrapText = strIn Do p = InStrRev(wrapText, " ", p + maxLen) - 1 wrapText = Left(wrapText,p) & vbCrLf & Right(wrapText, Len(wrapText)-p-1) Debug.Print Mid(Replace(wrapText, vbCrLf, "||"), p - 20) 'Stop Loop While p + maxLen < Len(wrapText) End Function
Veuillez: moins d'argot et de mots de remplissage, des échantillons de code plus bien formatés. Cette question est assez difficile à lire et à comprendre, comme. Whassup wit dat?