我正在使用 MacOS,否则我会尝试宏录制器:(
我有一个定期重复的任务,将多个表格中不同位置的选定文本更改为设定的字体和大小,并在表格内居中并垂直位于中间。我不是每周执行一千次,而是尝试制作一个宏来使用 VBA 为我执行此操作。
到目前为止,我已经更改了所选文本的字体和文本大小,但似乎无法弄清楚与我的朋友 Google 的对齐方式。
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
将其与您所拥有的结合起来,它应该可以帮助您实现目标。
您可以设置所选文本的字体和其他特征,但要更改对齐方式,您需要使用包含文本的形状。 通常,您可以沿着所选文本的父链向上移动以获取包含的形状,但不幸的是,这不适用于表格单元格中的文本。 PPT错误。
相反,您必须查看每个单元格以查明它是否已被选中,如果是,则深入了解其形状。 这就是我们在这里所做的。
顺便说一句,现在没有任何版本的 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