PR

【VBA】選択されたセル範囲アドレスを取得する(RefEdit)

これで楽に!?VBA活用
記事内に広告が含まれています。

こんにちは、Ryoです。
VBAでユーザーフォームを使った処理をすることは多々ありますが、その中でセル範囲のアドレスを取得したいこともあると思います。その場合はUserFormのRefEditコントロールを使うことで簡単に取得出来ますので、今回はそのRefEditを使用して範囲アドレスを取得してフォント色を変更する、合計値(SUM関数)を求めるサンプルについて書いていきたいと思います。

スポンサーリンク

1.サンプル概要

以下画像の様な表があるとして、「項目A」のセル範囲を選択すると自動的に範囲アドレスを取得します。

選択した状態でUserFormのCommandButton1を押すとフォント色を変更します。

次に「項目C」の数値が入力されている範囲を取得し、CommandButton2を押すと合計をテキストボックスに表示します。

これらのサンプルについて、以下に解説していきます。

2.事前準備

初めてRefEditコントロールを使用する場合は、ツールボックスに表示されていないと思いますので、先ず追加する作業が必要です。

「ツール」→「その他のコントロール」を選択すると、以下画像のダイアログが表示されますので、その中から「RefEdit.Ctrl」を選択しOKを押します。

正常に登録されていれば、ツールボックスに以下のアイコンが追加されています。

そして次にUserFormを以下の通り作成します。

ここまで作成出来たら、次はCommandButton1とCommandButton2にそれぞれコードを書いていきます。

3.サンプルコード

◆CommandButton1:Font色の変更

Private Sub CommandButton1_Click()

   '取得範囲の書式(色)変更、セル幅自動調整
   With Range(RefEdit1.Value)
       .Font.Color = RGB(255, 0, 0)
   End With

End Sub

RefEditの値を取得するには、Valueプロパティを使用します。

オブジェクト.Value

このオブジェクトはRefEditのオブジェクト名になりますので、範囲を取得する場合はサンプルに記述している通りRange(RefEdit1.Value)となります。

後は取得した範囲のフォント色をRGB関数を使って赤色としています。

ちなみに実行した際にRefEditコントロールの以下部分をクリックすることでUserFormを折りたたむことが出来ますが、ダイレクトにセル範囲を選択しても自動的に折りたたまれます。

≪ 参考 ≫

サンプルコードに列幅を自動調整するAutoFitを使うと、以下の様に選択範囲の列幅を調整できます。

この場合は1行追加するだけですね。

Private Sub CommandButton1_Click()

   '取得範囲の書式(色)変更、セル幅自動調整
   With Range(RefEdit1.Value)
       .Font.Color = RGB(255, 0, 0)
       .EntireColumn.AutoFit
   End With

End Sub

サンプルコードの通り.EntireColumn.AutoFitを追加すれば列幅を自動調整してくれますので、ご参考までに。

◆CommandButton2:選択範囲の合計

Private Sub CommandButton2_Click()

   '取得範囲の合計をテキストボックスに表示する
   Dim R As Range
   'RefEditで取得した範囲を変数Rにセット
   Set R = Range(RefEdit1.Value)
   'ワークシート関数(SUM)の結果をTextBox1に表示
   Me.TextBox1 = WorksheetFunction.Sum(R)

End Sub

こちらはワークシート関数(SUM)を使って選択範囲を合計しています。
この場合は取得したセル範囲を変数にセットしてから動作させないと計算が上手く処理できないようなので、サンプルのような手順になっています。

これで数値範囲を選択してCommandButton2を押せば計算されます。

4.まとめ

サンプルでは簡易的な処理しか行っていませんが、任意の選択範囲を自動的に取得できるので実運用上では使い勝手の良いコントロールだと思います。



当然ながら処理結果をフォーム上ではなくセル上に書き出すことも出来ますから、知っておくと幅が広がると思いますので、機会があればぜひご検討くださいませ。

以上、選択されたセル範囲アドレスを取得する方法についてでした!
今回の記事が何かの参考になれば幸いです。

Ryo

タイトルとURLをコピーしました