Excel

【Excel】VBAマクロでセル位置を取得(文字列検索、選択セルの場所、アクティブセル、特定・指定文字、移動、Range関数、Find関数)に変換する方法

当サイトでは記事内に広告を含みます

この記事では、ExcelのVBAマクロを使ってセル位置を取得する方法について解説していきます。

ポイントとしてはRange関数、Find関数を使用することです。

なお、下記の解説では完全な初心者でもわかりやすいようにあえて変数名(あなた自身が名付けていい場所)を少々変わった名称にしております。

そのため、あなた自身がご活用の際には、ここを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。それでは詳しく見ていきましょう!

VBAマクロで選択セルの位置を取得し指定セル(e2セル)に出力させる方法【Range関数】

それではまず、VBAマクロで選択セルの位置を取得し指定セル(e2セル)に出力させる方法について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub SentoE2Hyouzi()
    Dim hensuu As Range
    Set hensuu = Selection
    Range("E2").Value = hensuu.Address
End Sub

コードのAlt+F8を押し、マクロ選択画面でSentoE2Hyouzi関数を実行します。

このコードは、Excel上で選択されているセルの位置を取得し、その位置情報をE2セルに出力するものです。変数hensuuに選択されたセルの情報を保存し、E2セルにそのアドレス情報を表示しています。

VBAマクロでセルの位置を文字列検索で取得、表示する方法(完全一致で複数にも対応、エラー処理)【Find関数】

続いては、VBAマクロでセルの位置を文字列検索で取得、表示する方法(完全一致で複数にも対応、エラー処理)について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub MojiKensakuKanzenIchi()
    Dim hensuu As Range
    Dim kensakuKekka As Range
    Dim moji As String
    moji = InputBox("検索する文字を入力してください")
    Set hensuu = ActiveSheet.Cells.Find(What:=moji, LookAt:=xlWhole)
    If hensuu Is Nothing Then
        MsgBox "該当する文字は見つかりませんでした"
        Exit Sub
    End If
    Set kensakuKekka = hensuu
    Do
        MsgBox kensakuKekka.Address
        Set kensakuKekka = ActiveSheet.Cells.FindNext(kensakuKekka)
    Loop While Not kensakuKekka Is Nothing And kensakuKekka.Address <> hensuu.Address
End Sub

コードのAlt+F8を押し、マクロ選択画面でMojiKensakuKanzenIchi関数を実行します。

このコードでは、ユーザーが入力した文字列をActiveSheet上で完全一致検索し、該当するセルの位置をメッセージボックスで表示します。

複数の該当セルがある場合、すべてのセルの位置を順次表示します。また、該当するセルが見つからない場合は、エラーメッセージを表示します。

VBAマクロでセルの位置を文字列検索で取得、表示する方法(部分一致で複数にも対応、エラー処理)【Find関数】

続いては、VBAマクロでセルの位置を文字列検索で取得、表示する方法(部分一致で複数にも対応、エラー処理)について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。


Sub MojiKensakuBubunIchi()
    Dim hensuu As Range
    Dim kensakuKekka As Range
    Dim moji As String
    moji = InputBox("検索する文字を入力してください")
    Set hensuu = ActiveSheet.Cells.Find(What:=moji, LookAt:=xlPart)
    If hensuu Is Nothing Then
        MsgBox "該当する文字は見つかりませんでした"
        Exit Sub
    End If
    Set kensakuKekka = hensuu
    Do
        MsgBox kensakuKekka.Address
        Set kensakuKekka = ActiveSheet.Cells.FindNext(kensakuKekka)
    Loop While Not kensakuKekka Is Nothing And kensakuKekka.Address <> hensuu.Address
End Sub

コードのAlt+F8を押し、マクロ選択画面でMojiKensakuBubunIchi関数を実行すれば処理完了です^_^