2009-11-23 7 views
0

Je suis en train de créer un modèle dans Word, en utilisant un formulaire que l'utilisateur doit remplir pour remplir une partie du document.Mise en forme du texte de la zone de texte Mulitline en word avec VBA

Le bit sur lequel je suis actuellement bloqué est à la fin du document, où les cc sont répertoriés.

Le formulaire comporte une zone de texte multiligne dans laquelle l'utilisateur place ses cc, un par ligne.

Je veux ensuite ajouter à la fin du document le contenu de la boîte de texte, mais dans le bon format. Plus précisément, il devrait ressembler à:

cc: First CC contact 
     Second CC contact 
     so on and so forth 

J'ai essayé de le faire en utilisant 2 signets, de sorte que mon code est actuellement:

' If 'CC' box has content, add it 
If doc_CC.TextLength > 0 Then 
    .Bookmarks("CC").Range.Text = vbCr + "cc:" 
    .Bookmarks("CCs").Range.Paragraphs.Indent 
    .Bookmarks("CCs").Range.Text = doc_CC + vbCr 
End If 

Cependant, lorsque cela est exécuté, sur la page il ressemble:

 cc:  first contact 
     second contact 
     and so on 

se rendre compte que la méthode 2 de signet est un peu compliqué, mais il semblait être une bonne idée à l'époque - de toute évidence ce n'est pas le cas! J'ai fait quelques recherches pour trouver un moyen de le faire avec Split, mais je ne fais pas beaucoup de progrès dans cette voie - je soupçonne que je recherche la mauvaise chose.

Comment est-ce que je fais ceci pour que le formatage soit comme désiré? Toute aide est grandement appréciée.

Répondre

0

Essayez d'insérer un caractère de tabulation? + Chr (9) ou même + vbTab peut fonctionner.

+0

J'ai essayé d'utiliser le caractère de tabulation au lieu du retrait de paragraphe. La première ligne semble bien mais les lignes suivantes ne sont pas indentées (ce qui était une surprise - il ne se comportait pas comme si vous le tapiez manuellement dans un document - si vous tabulez, puis appuyez sur Entrée, votre prochaine ligne sera tabulée. l'ajout de l'onglet dans le vba, ce n'est pas le cas, la ligne suivante retournera par défaut à la marge de gauche – Matt

+0

Pourquoi ne pas insérer un onglet pour chaque ligne? –

0

J'ai trouvé un travail autour duquel, bien que ne répondant pas à la vraie question de savoir comment le faire, produit un résultat pour le même effet.

Avoir utilisé une table à 2 colonnes sans lignes à la place, avec le contenu de a1 étant "cc:" et le contenu de a2 étant ce qui a été entré dans la zone de texte multiligne. S'il n'y a rien dans la zone de texte, la table est supprimée.

Je vais garder à l'esprit cette question, donc si quelqu'un a la bonne réponse, je peux la marquer en conséquence.

0

Une autre possibilité serait de formater le paragraphe cc avec un retrait négatif (comme c'est le cas pour les puces ou la numérotation). Utilisez un caractère de nouvelle ligne - Chr (11) - au lieu de vbcr pour séparer chaque entrée. Le texte devrait tous s'aligner, alors ...

Questions connexes