Excel VBA ユーザーフォームの背景色を変更する

ユーザーフォーム作成/操作

ユーザーフォームの背景色を変更する方法をご説明します。

ユーザーフォームの背景色は、プロパティを直接変更する方法とVBAで変更する方法があります。

また、パレットに自作の色を作成して、その色を使う事も可能ですのでパレットへの登録方法も併せてご説明します。

またユーザーフォームの他の操作については下記記事をご覧ください。

1.プロパティで背景色を変更する

まずはプロパティで直接背景色を変更する方法です。

まずは作成したユーザーフォームをユーザーフォームモジュールで表示します。

作成方法がわからない方や、ユーザーフォームモジュールがわからない方は「ユーザーフォームの作り方と表示方法」をご覧ください。

プロパティを表示するには、「表示タブ」のプロパティウィンドウを選択します。

ユーザーフォームのプロパティはたくさんありますが、今回操作するのは「BackColor」です。

変更するには赤枠の中の右端にある▼を選択します。

パレット」と「システム」と表示されるので、「パレット」を選択します。

パレットを選択すると、そのPCのパレットに登録されている色を選択できます。

2.パレットに色を登録する

ユーザーフォームの背景色に設定したい色がパレットに登録されていない場合に、自分で色を指定して登録する事ができます。

色の登録には基本的にRGBで指定しますのでRGBの確認方法と、登録方法を順にご説明します。

RGBの確認方法

ホームタブ塗りつぶしの色を選択します。

選択すると「その他の色」を選択します。

色の設定画面が表示されますので、標準で色の指定をするか好みの色がない場合は選択しないでユーザー設定を選択しても構いません。

指定したい色に近い色を選択してから「ユーザー設定」を選択しても良いと思います。

ユーザー設定を選択すると、現在指定されているRGB()が確認できます。

この3つの数値をパレットに登録しますので、メモしましょう。

もし色の配色を微調整したい場合は、このの数値を変更します。

ここで登録したいRGBが確認できましたら、次はユーザーフォームに登録するパレットに登録します。

パレットに登録する

先ほどのユーザーフォームのプロパティウィンドウのBackColorからパレットを選択します。

下2行の色のない部分で登録したい□を右クリックします。

色の作成」が表示されるかと思いますので、先ほど確認したRGBの数値を入力します。

指定したら追加を選択します。

すると先ほど白色だったパレットに作成した色が登録されました。

これで登録されていない色でも作成した色を選択可能となります。

3.VBAで背景色を変更する

VBAでユーザーフォームの背景色を変更する方法です。

背景色を変更するには「BackColor」プロパティで変更します。

色の指定方法はRGBで「」の数値を指定して変更します。

RGBの確認方法については上記の方法と同じです。

もしくはネット検索で調べることも可能です。

変更は次のように記述します。

Object.BackColor = RGB(赤, 緑, 青)

VBAで変更するサンプルコード

基本的には先に設定してから表示することでモーダルも、モードレスでも対応可能となりますので、先に設定してから表示する事をおすすめします。

モーダルで表示した場合

表示モードをモーダル にする場合は、先にサイズの変更を行ってから表示する必要があります。

先に表示してから変更すると背景色が反映されません。

Sub Sample1()
    
    With UserForm1
        
        .BackColor = RGB(153, 255, 204)
        .Show vbModal
        
    End With
        
End Sub
モードレスで表示した場合

モードレスの場合は、先に表示させてから変更しても、先に指定してからでも反映されます。

Sub Sample2()
    
    With UserForm1
    
        .Show vbModeless
        .BackColor = RGB(153, 255, 204)
        
    End With
        
End Sub
Sub Sample3()
    
    With UserForm1
        
        .BackColor = RGB(153, 255, 204)
        .Show vbModeless
        
    End With
        
End Sub
タイトルとURLをコピーしました