2016-11-15 7 views
1

Я пытаюсь создать таблицу и центрировать текст в вертикальном направлении. Когда я создаю таблицу, я заполнить ячейку с текстом и применить выравнивание:Издатель VBA Vertical Text Alignment свойство не применяется

Dim pg As Page 
Dim tbl As Shape 

Set pg = ActiveDocument.ActiveView.ActivePage 

Set tbl = pg.Shapes.AddTable(1, 1, InchesToPoints(3), InchesToPoints(5), InchesToPoints(2), InchesToPoints(1)) 

With tbl.Table.Rows(1).Cells(1) 
    .TextRange.Text = "Hello, World!" 
    .VerticalTextAlignment = pbVerticalTextAlignmentCenter 
End With 

Однако текст не вертикально выравнивать должным образом. Когда я смотрю на вкладке «Свойства ячеек» в разделе «Формат таблицы», я вижу, что она уже установлена ​​на «Среднее» вертикальное выравнивание, но будет применяться только после того, как я нажму «ОК» (если я нажму «отменить», ничего не изменится).

Не имеет значения, если я изменяю текст до или после выравнивания. У кого-нибудь есть идеи о том, почему это происходит?

+0

Вы ищете что-то более проницательное, чем «похоже на ошибку»? ;) – Jbjstam

+0

Вам нужно будет выяснить способ получения правильного Hwnd сначала (.ActiveWindow может ссылаться на редактор VBE), но вы можете использовать SetForegroundWindow и SendKeys "% JL1", True – Jbjstam

ответ

0

Похоже, вы нашли ошибку. Вот попытка обходного пути.

#If Win64 Then 
    Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 
#Else 
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds as Long) 'For 32 Bit Systems 
#End If 

Sub Centralize(oCellRange As CellRange) 
    oCellRange.Select 
    Sleep 500 
    Application.ActiveDocument.ActiveWindow.Activate 
    SendKeys "%JL1", True 
End Sub 

Sub Test() 
    Dim oCellRange As CellRange 
    Set oCellRange = Application.ActiveDocument.Pages(1).Shapes(1).Table.Cells(1, 1, 2, 2) 
    Call Centralize(oCellRange) 
End Sub