Excelでは、そのパソコンにインストールされているフォントを使用できます。しかし、VBAには「使用可能なフォントの一覧を返すプロパティ」がありません。う~ん…困った。どうしよう?APIを使ってWindowsから情報を取得するか?ツールバーの[フォント]ボタンをクリックすればフォント名の一覧が表示されるのになぁ……。そうです!そのリストから一覧を取得すればいいんです。
ここではUserFormを例に解説します。UserFormにリストボックス(ListBox1)とコマンドボタン(CommandButton1)を配置してください。次のコードは、コマンドボタンをクリックすると、使用できるフォント名の一覧をリストボックスに表示します。
Private Sub CommandButton1_Click() Dim i As Long With Application.CommandBars("Formatting").Controls(1) For i = 1 To .ListCount ListBox1.AddItem .List(i) Next i End With End Sub
フォントを選択できる[フォント]ボタンは、[書式設定]ツールバーの左端にあります。Application.CommandBars("Formatting").Controls(1)は、そのコントロールを表します。このコントロールはリストですので、一般のListBoxと同じようにListCountなどのプロパティを使用できます。
[フォント]ボタンを"左端"とインデックス値で指定するのではなく、名前で指定すればさらに安全でしょう。