概要
前回はスライド内のフォントを変更する機能を実装しました(前回の記事)。今回はスライド内の範囲指定した文字と選択したシェイプ内のフォント変更する機能を実装します。選択した対象を選別するアルゴリズムは以下フローチャートを参照下さい。

矢印や線などフォントを変更できないシェイプを対象外にしたり、グループ化されたシェイプの様に個別にするとフォントを変更できるように対応したりする為、条件文が沢山出てきて複雑になっています。フローチャートを使って整理しておくとコードが書きやすくなります。以下がコードです。
コード
'VBA標準モジュール
Option Explicit
'コンボボックスにフォントを設定
Public Sub setFontItems()
Dim Items As String
With UserForm1
.cmB_font.Clear 'コンボボックス内初期化
Items = "Meiryo UI,MS ゴシック" '内容をカンマで区切り記載
.cmB_font.List = Split(Items, ",") 'カンマで区切る
End With
End Sub
'-------------------指定範囲のフォントを変更------------------------------
Sub changeSelectFont()
Dim str As String: str = UserForm1.cmB_font.Text 'コンボボックスのフォント名取得
Dim row As Integer '表の行カウント用
Dim col As Integer '表の列カウント用
Dim gshp As Shape 'グループシェイプ用
With ActiveWindow.Selection
If .Type >= ppSelectionText Then 'テキストを選択している場合
With .TextRange.Font
.Name = str 'フォント変更
.NameFarEast = str 'アジア言語のフォント変更フォント変更
End With
ElseIf .Type >= ppSelectionShapes Then 'シェイプを選択している場合
If .ShapeRange.Type = msoTable Then '表を選択している場合
With .ShapeRange.Table '表のフォント変更
For row = 1 To .Rows.Count
For col = 1 To .Columns.Count
.Cell(row, col).Shape.TextFrame.TextRange.Font.Name = str
.Cell(row, col).Shape.TextFrame.TextRange.Font.NameFarEast = str
Next col
Next row
End With
Exit Sub
ElseIf .ShapeRange.Type = msoPicture Then '図を選択している場合
MsgBox "図です。"
Exit Sub
Else
If .ShapeRange.HasTextFrame Then 'シェイプを選択している場合
With .ShapeRange.TextFrame.TextRange.Font
.Name = str
.NameFarEast = str
End With
Else
If .ShapeRange.Type = msoGroup Then 'グループの時
For Each gshp In .ShapeRange.GroupItems
If gshp.HasTextFrame Then
With .ShapeRange.TextFrame.TextRange.Font
.Name = str
.NameFarEast = str
End With
End If
Next
Else
MsgBox "テキストフレームを持っていません"
End If
End If
End If
Else
MsgBox "変更箇所を指定してください"
End If
End With
End Sub
'VBAユーザーフォーム
Option Explicit
Private Sub cB_font_Click()
Call changeSelectFont
'Call changeSlideFont
'Call changeAllFont
End Sub
'ユーザーフォーム起動時の処理
Public Sub UserForm_Initialize()
Call setFontItems
End Sub
実行するとドラッグで指定した文字や選択したシェイプのフォントが変わったと思います。下図は範囲指定、シェイプ選択、グループ選択、表選択、矢印選択の場合をテストしたものです。矢印はテキストが無いのでエラー表示されます。

次回はラジオボタンで一括変更、スライド内変更、範囲指定変更を使い分ける機能を実装します。
ディスプレイコード