VBAでのRefEditの使い方とプロパティおよびイベント

Excel VBA から RefEdit コントロールを利用する方法です。 RefEdit は Excel のワークシート上のセル範囲を指定したい場合にワークシート上で指定する機能を提供するコントロールです。ここでは Excel のユーザーフォームで設置できる RefEdit を VBA から使用する方法と、 RefEdit で設定可能なプロパティおよびイベントの一覧について解説します。

(Last modified: )

RefEditのプロパティ一覧

ユーザーフォームに設置するRefEditで利用可能なプロパティ一覧は次の通りです。

RefEdit の既定のプロパティは Value プロパティです。

いくつかのプロパティについてはこのあと簡単に解説します。

RefEditの基本的な使い方

RefEdit コントロールはセル範囲をユーザーに入力したもらう場合に、値を直接入力するのではなくワークシート上でセル範囲を選択することで自動的にセル範囲を表す文字列を取得できるコントロールです。

例えばユーザーフォームに次のように RefEdit コントロールを設置します。

RefEditの基本的な使い方(1)

ユーザーフォームを表示して RefEdit コントロールが表示されたら、 RefEdit コントロールの次の個所をクリックしてください。

RefEditの基本的な使い方(2)

すると RefEdit コントロールが次のように表示され、ワークシート上のセル範囲を選択するモードになります。

RefEditの基本的な使い方(3)

ワークシート上のセル範囲をマウスでドラッグして選択してください。選択したセル範囲が RefEdit コントロール上に表示されます。

RefEditの基本的な使い方(4)

セル範囲の選択が終わりましたら RefEdit コントロールの次の個所をクリックしてください。

RefEditの基本的な使い方(5)

RefEdit コントロールが含まれるユーザーフォームが元の状態で表示され、 RefEdit コントール上には先ほど選択したセル範囲を表す文字列が表示されます。

RefEditの基本的な使い方(6)

なお RefEdit コントロールに直接文字列を入力することもできます。

RefEditの基本的な使い方(7)

RefEditに入力された値を取得する(Value)

RefEdit に入力されたテキストを取得するには Text プロパティの値を取得します。

オブジェクト.Value

ワークシート上のセル範囲を選択して表示された RefEdit コントロールの値、または RefEdit に直接入力した値を取得します。

具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャにコードを記述し、コマンドボタンをクリックしたら RefEdit コントロールに設定されている文字列を取得しメッセージボックスに表示します。

Option Explicit

Private Sub CommandButton1_Click()
    MsgBox RefEdit1.Value
End Sub

RefEditに入力された値を取得する(Value)(1)

RefEditに入力された値を取得する(Value)(2)

ユーザーフォームを表示し、表示された RefEdit コントロールを使ってセル範囲を選択してください。

RefEditに入力された値を取得する(Value)(3)

RefEditに入力された値を取得する(Value)(4)

コマンドボタンをクリックすると、 RefEdit コントロールに表示されている値を取得しメッセージボックス上に表示します。

RefEditに入力された値を取得する(Value)(5)

RefEditの表示位置を設定する(Top,Left)

RefEdit が表示される位置を設定するには Top プロパティと Left プロパティに値を設定します。

オブジェクト.Top [= Single ]
オブジェクト.Left [= Single ]

Top プロパティにはユーザーフォームの上端から RefEdit の上端までの距離、 Left プロパティにはユーザーフォームの左端から RefEdit の左端までの距離をそれぞれ単精度浮動小数点型の数値で代入します。単位はポイントです。

具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャにコードを記述し、 RefEdit の位置を設定しています。

Option Explicit

Private Sub UserForm_Initialize()
    RefEdit1.Top = 100
    RefEdit1.Left = 80
End Sub

RefEditの表示位置を設定する(Top,Left)(1)

RefEditの表示位置を設定する(Top,Left)(2)

ユーザーフォームを表示すると、表示された RefEdit が指定した位置で表示されているのが確認できます。

RefEditの表示位置を設定する(Top,Left)(3)

RefEditの幅と高さを設定する(Width,Height)

RefEdit の幅と高さを設定するには幅については Width プロパティ、高さについては Height プロパティに値を設定します。

オブジェクト.Width [= Single ]
オブジェクト.Height [= Single ]

幅および高さをあらわす単精度浮動小数点型の数値を代入してください。単位はポイントです。

具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャにコードを記述し、 RefEdit の幅と高さを設定しています。

Option Explicit

Private Sub UserForm_Initialize()
    RefEdit1.Width = 150
    RefEdit1.Height = 50
End Sub

RefEditの幅と高さを設定する(Width,Height)(1)

RefEditの幅と高さを設定する(Width,Height)(2)

ユーザーフォームを表示すると、表示された RefEdit の幅および高さが指定した値に設定されているのが確認できます。

RefEditの幅と高さを設定する(Width,Height)(3)

RefEditのイベント一覧

RefEditで発生するイベント一覧は次の通りです。

AfterUpdate
BeforeDragOver
BeforeDropOrPaste
BeforeUpdate
Change
DblClick
DropButtonClick
Enter
Error
Exit
KeyDown
KeyPress
KeyUp
MouseDown
MouseMove
MouseUp

RefEdit の既定のイベントは BeforeDragOver イベントです。

-- --

Excel のユーザーフォームで設置できる RefEdit を VBA から使用する方法と、 RefEdit で設定可能なプロパティおよびイベントの一覧について解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。