初心者必見!マウスで選ぶだけ「RefEditコントロール」の使い方とエラー回避術

【業務効率化】VBA
スポンサーリンク

「あぁ……またセル範囲を打ち間違えた。$A$1:$C$10って打つの、地味に面倒だしミスるんだよね……」

こんなふうに感じたことはありませんか?

UserFormを作成したものの、対象のセル範囲をテキストボックスへ手入力させる設計は、ユーザーにとって思いのほか大きなストレスになることもあります。
1文字間違えるだけでマクロは止まり、せっかくの効率化が台無しですよね。

実は、Excel標準機能のように「マウスでドラッグして範囲を選択する」ボタンは、VBAでも簡単に作成できます。それが「RefEdit(レフエディット)」コントロールになります。

これを使えば、入力ミスはほぼ0になり、操作時間も短縮できます。今回はその実装方法を解説します!

【業務効率化】VBAの記事を見る 

RefEditとは?

RefEditとは、一言で言うと「Excelのシートとフォームを繋ぐ、伸縮自在なマジックハンド」のような機能になります。

普段、Excelで関数を入力する際、マウスで範囲を選択する時に現れるボタン、あれこそがRefEditです。

下準備:隠れたツールを呼び出す

実はRefEditは、初期状態のツールボックスには配置されておらず、隠れた状態になっています。以下の手順で呼び出すことができます。

  1. VBAのUserFormデザイン画面で、ツールボックスの何もないところを右クリック。
  2. 「その他のコントロール」を選択。
  3. リストから 「RefEdit.Ctrl」 を探してチェックを入れます。

これで、ツールボックスにRefEditのアイコンが登場します!

コピペで動く!基本のコード

配置したRefEdit(名前はRefEdit1とします)で選択した範囲を、メッセージボックスで表示するコードを書いてみましょう。

Private Sub CommandButton1_Click()
    ' 変数の宣言
    Dim targetRange As Range
    Dim selectedAddress As String

    ' RefEditに入力された文字列を取得
    selectedAddress = RefEdit1.Value

    ' 何も選ばれていない時のエラー対策
    If selectedAddress = "" Then
        MsgBox "セルを選択してください", vbExclamation, "選択ミス"
        Exit Sub
    End If

    ' 文字列を実際のセルとして扱う
    On Error Resume Next
    Set targetRange = Range(selectedAddress)
    On Error GoTo 0

    ' ちゃんと範囲が取得できたら、そのセルに色を塗ってみる
    If Not targetRange Is Nothing Then
        targetRange.Interior.Color = vbYellow
        MsgBox targetRange.Address & " を黄色に塗りました!", vbInformation
    Else
        MsgBox "正しいセル範囲を選んでください。", vbCritical
    End If
End Sub

 

使う時の注意点

RefEditは非常に強力で便利ですが、1点だけ知っておきたいポイントがあります。
それは「モードレスフォーム(操作中にシートを触れる状態のフォーム)」と併用する際、相性が悪く動作が不安定になるケースがある点です。
まずはシンプルに「ボタンを押したら選択範囲を処理する」という単独の機能から取り入れていただくのがおすすめです!

【業務効率化】VBAの記事を見る 


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でしたが、年間100万円以上節約していました。
株式投資で年間360万円以上投資し、iDeCoも併用しています。
総資産はアッパーマス層に到達しました。
資格は日商簿記3級を持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、生産性を高めるITスキルについて発信しています。

生活を豊かにするため、高配当株投資で年間配当金60万円をめざしています。
現在の年間配当金は30万円ほどです。

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

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