コントロールのサイズを自動調整する(AutoSizeプロパティ)

ユーザーフォームに設置したコントロールに含まれるコンテンツの大きさに合わせてコントロールのサイズを自動で調整するかどうか設定するには AutoSize プロパティを使用します。ここでは Excel のユーザーフォームで AutoSize プロパティを使ってコントロールのサイズを自動調整する方法について解説します。

(Last modified: )

サイズを自動調整するか設定する

コントロールに含まれるコンテンツに合わせてサイズを自動調整するか設定するには AutoSize プロパティを使用します。例えばラベルの AutoSize プロパティの値はデフォルトで「False」となっておりサイズの自動調整は行われません。

サイズを自動調整するか設定する(1)

ユーザーフォームの実行をクリックしてユーザーフォームを実際に表示してみるとラベルがそのままのサイズで表示されることが確認できます。

サイズを自動調整するか設定する(2)

コントロールのサイズをコントロールに含まれるコンテンツに合わせて自動的に調整するには、 AutoSize プロパティの項目をクリックしてください。そして表示されたドロップダウンメニューをクリックし、「True」をクリックしてください。

サイズを自動調整するか設定する(3)

コントロールのサイズが自動的に調整されました。今回はサイズが縮小していますが、拡大することもあります。

サイズを自動調整するか設定する(4)

このように AutoSize プロパティの値を変更することで、コントロールのサイズを自動調整するように設定することができます。

VBAのプログラムの中でAutoSizeプロパティを設定する

プロパティウィンドウを使って AutoSize プロパティの値を変更する代わりに、 VBA のコードを記述して AutoSize プロパティの値を変更することもできます。

プログラムの中で AutoSize プロパティを設定する場合は次の書式を使用します。

オブジェクト.AutoSize [= Boolean ]

対象のオブジェクトの AutoSize プロパティに対して True または「False」を代入します。

True を設定した場合はコントロールのサイズは自動調整されます。また「False」を設定した場合はコントロールのサイズは自動調整されません。

サンプルコード

簡単なサンプルで試してみます。ユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャを作成し、その中で AutoSize プロパティの値を設定します。ユーザーフォームが表示される前にコントロールのプロパティの設定が行われます。

Initialize イベントに対するイベントプロシージャの使い方については「ユーザーフォームを表示する直前に発生するイベント(Initializeイベント)」を参照されてください。

ユーザーフォームのコントロールが何もないところをダブルクリックしてください。

VBAのプログラムの中でAutoSizeプロパティを設定する(1)

ユーザーフォームの規定のイベントである Click イベントに対するイベントプロシージャが表示されます。

VBAのプログラムの中でAutoSizeプロパティを設定する(2)

今回はユーザーフォームの Initialize イベントに対するイベントプロシージャを使用するので、コードウィンドウで次のようにイベントプロシージャを追加で記述してください。

Private Sub UserForm_Initialize()
    Label1.AutoSize = True
    Label2.AutoSize = False
End Sub

VBAのプログラムの中でAutoSizeプロパティを設定する(3)

これでコードの記述は完了です。では実際に試してみます。「Sub/ユーザーフォームの実行」をクリックしてください。

VBAのプログラムの中でAutoSizeプロパティを設定する(4)

ユーザーフォームが表示されました。追加されている 2 つのラベルで、上のラベルはサイズが自動調整され、下のラベルはサイズが自動調整されていないことが確認できます。

VBAのプログラムの中でAutoSizeプロパティを設定する(5)

このように VBA のプログラムの中で AutoSize プロパティの値を変更することができました。

サイズの指定とAutoSizeプロパティを両方設定した場合

AutoSize プロパティに「True」を設定することで、コントロールのコンテンツに合わせてサイズが自動調整されますが、同じコントロールに対して Width プロパティや Height プロパティを使ってサイズを指定した場合は、指定したサイズが優先されます。

※ コントロールのサイズの指定について詳しくは「コントロールのサイズ(幅と高さ)を設定する(Width,Heightプロパティ)」を参照されてください。

先ほどのサンプルプログラムでユーザーフォームの Initialize イベントに対するイベントプロシージャを次のように変更してみます。

Private Sub UserForm_Initialize()
    Label1.AutoSize = True
    With Label2
        .AutoSize = True
        .Width = 150
        .Height = 50
    End With
End Sub

サイズの指定とAutoSizeプロパティを両方設定した場合(1)

「Sub/ユーザーフォームの実行」をクリックしてください。ユーザーフォームが表示されました。今回は 2 つのラベルでそれぞれサイズが自動調整されるように設定していますが、下のラベルはサイズを明示的に指定しているため、指定したサイズの方が優先して適用されているのが確認できます。

サイズの指定とAutoSizeプロパティを両方設定した場合(2)

このようにサイズの自動調整とサイズの指定を両方行った場合はサイズの指定が優先されます。

-- --

Excel のユーザーフォームで AutoSize プロパティを使ってコントロールのサイズを自動調整する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。