我有一项常规任务,将多个表中不同位置的选定文本更改为设置的字体和大小,并在表中居中,垂直在中间。
无论选择什么文本,我都可以更改字体和文本大小。
我搞不清路线。
Sub SR()
With ActiveWindow.Selection.TextRange2.Font
.Name = "Roboto Light (Body)"
.Size = "10"
End With
End Sub
解决方案:
Sub SR()
Dim oTbl As Table
Dim oSh As Shape
Dim lRow As Long
Dim lCol As Long
' Get a reference to the parent table
With ActiveWindow.Selection.ShapeRange(1).Table
' Find the selected cell
For lRow = 1 To .Rows.Count
For lCol = 1 To .Columns.Count
If .Cell(lRow, lCol).Selected Then
With .Cell(lRow, lCol).Shape.TextFrame2
.HorizontalAnchor = msoAnchorCenter
.VerticalAnchor = msoAnchorMiddle
End With
With .Cell(lRow, lCol).Shape.TextFrame2.TextRange.Font
.Name = "Roboto Light (Body)"
.Size = "10"
End With
End If
Next
Next
End With
End Sub
将此与您所拥有的相结合,它应该会让您达到目标。
您可以设置所选文本的字体和其他特征,但要更改对齐方式,您需要使用包含文本的形状。通常情况下,您可以沿着所选文本的父链查找以获得包含的形状,但不幸的是,这不适用于表单元格中的文本。PPTBug。
相反,你必须查看每个单元格,以确定它是否被选中,如果是,则深入到它的形状。这就是我们在这里所做的。
顺便说一句,没有一个版本的PPT有宏记录器了,甚至Windows也没有。
Sub Test()
Dim oTbl As Table
Dim oSh As Shape
Dim lRow As Long
Dim lCol As Long
' Get a reference to the parent table
With ActiveWindow.Selection.ShapeRange(1).Table
' Find the selected cell
For lRow = 1 To .Rows.Count
For lCol = 1 To .Columns.Count
If .Cell(lRow, lCol).Selected Then
With .Cell(lRow, lCol).Shape.TextFrame2
.HorizontalAnchor = msoAnchorCenter
.VerticalAnchor = msoAnchorMiddle
End With
End If
Next
Next
End With
End Sub