【VBA】Windowsの配色モードに合わせて、ユーザーフォームでダークモードとライトモードに切り替える方法

Windows10/11ではダークモードかライトモードを切り替える機能があります。

対応しているアプリの自動的に配色を切り替えることができます。

今回はVBAのユーザーフォームをWindows設定に合わせて、ダークモード/ライトモード用の配色に切り替える方法を説明していきます。

コード

Windowsの配色モードに合わせて、ユーザーフォームの背景色を変更するサンプルです。

配色モードがダークモードの場合は黒、ライトモードの場合は白に変化します。

なお、ユーザーフォーム表示中に配色モードを切り替えた場合は背景色が変化しません。

「IWshRuntimeLibrary」を参照してから実行してください。

Private Sub UserForm_Initialize()
    'モードをレジストリから取得
    Dim wsh  As New IWshRuntimeLibrary.WshShell
    Dim modePar As Long
    modePar = wsh.RegRead(Name:="HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize\AppsUseLightTheme")
    'モードに応じて配色を変更
    Select Case modePar
    Case 0
        'ダークモード
        Me.BackColor = vbBlack
    Case 1
        'ライトモード
        Me.BackColor = vbWhite
    End Select
End Sub
タイトルとURLをコピーしました