2010-06-22 12 views
-1

Ma tâche consiste à obtenir du texte à imprimer et à afficher bien qu'il soit plus long que la série de 409 points. La feuille sur laquelle je travaille est une feuille de destination provenant d'une feuille source qui peut changer souvent, mais en général seulement 1 des 15 cellules présente ce problème. Les paramètres de la cellule sont fixes, donc je ne peux pas changer la largeur de police ou de colonne.Comment puis-je afficher le texte d'affilée sur 409 pts de haut?

Sur une feuille de calcul, j'ai créé une macro qui insérera une ou plusieurs lignes, fusionnera les cellules requises et changera la hauteur de ligne pour augmenter la taille de la cellule, mais IF ... END IF puis-je utiliser pour trouver des lignes supérieures à 408 le Macro?

J'utilise Excel 2007.

Répondre

1

Essayez d'enregistrer une macro et en changeant la taille d'une ligne. Puis inspectez le code VBA généré par la macro pour voir comment la taille de la ligne est générée dans le code.

Vous remarquerez que le code VBA n'utilise pas de pixels, vous devrez donc effectuer une conversion pour trouver l'équivalent de 409 pixels. Après cela, vous pouvez utiliser une boucle pour trouver toutes les lignes qui ont une hauteur de cellule supérieure à une certaine valeur:

Dim lng As Long 
lng = 1 
Do While Not IsEmpty(Range("A" & lng).Value) 
    If Rows(lng).RowHeight >= 306.75 Then 
    'Insert the code to add a new row here. When looking at the ' 
    'code in your macro, you can replace the row number (e.g. the "18:18" in ' 
    'Rows("18:18") with the counter variable, lng, like so: Rows(lng).... ' 
    'If you want the *following* row, use Rows(lng+1) instead. 
    '' 
    'I'm not sure of the command to insert a new row, but if you do insert a ' 
    'new row, watch your counter. You may need to add an additional ' 
    'lng = lng + 1 into your code to account for the newly added row.' 
    End If 
    lng = lng + 1 
Loop 
+0

Excellent, merci Ben. Cela a permis à ma macro de trouver toutes les lignes en fonction de la hauteur. Maintenant, une question de suivi: Comment puis-je obtenir la macro pour ajouter une nouvelle ligne sous chaque ligne sur 409pts? Mon intention est de placer chaque ligne au-dessus de 409, d'insérer une ligne au-dessous, de changer les deux lignes à 409 et de fusionner la cellule "over-textted". Je peux faire l'addition, la taille et la fusion, et votre aide m'a permis de trouver chaque ligne mais ma macro veut mettre la nouvelle ligne où j'ai créé (enregistré) la macro, pas sous chaque ligne trouvée. Comment puis-je changer mes "Lignes" (18:18 "). Sélectionnez" être "Lignes (chacune trouvée) .Sélectionnez"? Merci encore. – Kirk

+0

@Kirk voir mes commentaires supplémentaires dans ma réponse. Fondamentalement, vous pouvez utiliser des noms de variables à la place des numéros de lignes codées en dur de votre macro. Par exemple, dans mon exemple de code, j'ai utilisé 'Rows (lng)', qui utilise la valeur de la variable 'lng' pour alimenter la fonction' Rows() '. Vous devrez peut-être jouer un petit peu avec ce numéro pour vous assurer que vous travaillez avec la ligne. –