フォームのControlsコレクションからControlオブジェクトをループで取り出し、それぞれについてフォント関連プロパティを同様に設定することで、複数コントロールをまとめてフォント変更することができます。
次のプログラムでは、「FontName」プロパティで”フォントの種類”を、また「FontSize」プロパティで”フォントサイズ”を、アクティブフォームのすべてのコントロールに対して同じ値に設定しています。
- LabelNameプロパティは「Control.LabelName」という表記では参照できません。「Control.Properties("LabelName")」のように書く必要があります。
- フォントに関するプロパティはすべてのコントロールが持っているわけではありません。チェックボックス、オプションボタン、イメージ、四角形などのコントロールは文字を表示しませんので、フォント関連プロパティはありません。そのようなコントロールのFontNameプロパティなどを参照するとエラーが発生しますので、次のプログラムではその場合のエラー(エラー番号
438)は無視して続行するようにしています。
プログラム
Sub SampleCode_13()
'すべてのコントロールのフォントを変更する
Dim ctl As Control
Dim strLableName As String
On Error GoTo Err_Handler
'アクティブフォームのすべてのコントロールのループ
For Each ctl In Screen.ActiveForm.Controls
With ctl
.FontName = "游明朝" 'フォントの種類
.FontSize = 12 'フォントのサイズ
End With
Next ctl
Exit_Here:
Exit Sub
Err_Handler:
If Err.Number = 438 Then
'フォントを持たないコントロールへの設定エラー時
Resume Next
Else
Beep
MsgBox "エラー番号 : " & Err.Number & vbCrLf & _
"エラー内容 : " & Err.Description, _
vbOKOnly + vbCritical
End If
Resume Exit_Here:
End Sub
実行例
■実行前

■実行後
|