poniedziałek, 21 września 2015

Jak wyrównać tekst w kształtach Shape

Pomysł na niniejszy wpis powstał po przeczytaniu pytania i kilku odpowiedzi w serwisie StackOverflow. Postawione pytanie było proste lecz tu przedstawię je w zmodyfikowanej i bardziej rozbudowanej formie- jak uzyskać efekt, w którym poszczególne paragrafy w kształcie są naprzemiennie wyrównane do prawej i lewej strony (zgodnie z tym co prezentuje poniższy przykładowy obrazek)?

Oto prosty kod realizujący zadanie wraz z kilkoma komentarzami:

01Sub AlignParagraphs_In_Shape()
02 
03    'definiujemy ksztalt...
04    Dim SHP As Shape
05    Set SHP = ActiveSheet.Shapes(1)
06 
07    '...i istotny jego wewnętrzny obiekt
08    'powiązany z warstwą tekstową kształtu
09    Dim txtRNG2 As TextRange2
10    Set txtRNG2 = SHP.TextFrame2.TextRange
11 
12    'w pętli dokonujemy naprzemiennego wyrównania do lewej lub prawej
13    Dim i As Byte
14    With txtRNG2
15        For i = 1 To .Paragraphs.Count
16             
17            'wyrównanie osobno dla paragrafów parzystych i nieparzystych
18            If i Mod 2 Then
19                .Paragraphs(i).ParagraphFormat.Alignment = msoAlignRight
20            Else
21                .Paragraphs(i).ParagraphFormat.Alignment = msoAlignLeft
22            End If
23             
24        Next i
25    End With
26 
27End Sub

Brak komentarzy:

Prześlij komentarz