Excelで検索したい文字列のセルをダブルクリックして、[検索と置換]ダイアログボックスを表示して、そのセル内の文字列で検索するマクロです。
マクロの内容
ワークシート名が[名簿]と[組織表]というブックがあります。
[名簿]シートの名前を[組織表]シートのどこにあるかを検索します。
検索したい文字列のセルをダブルクリックします。
[組織表]シートに切り替わります。
それと同時に[検索と置換]ダイアログボックスが表示されます。
[検索と置換]ダイアログボックスの[検索する文字列]には、[名簿]シートで選択したセルの文字列が入力されています。
そのまま[検索と置換]ダイアログボックスの[次を検索]ボタンをクリックします。
[組織表]シート内のセルが選択されます。
参考にさせていただいたサイトです。
(^人^)感謝♪
『マクロで検索をだすには』(初心者) エクセル Excel [エクセルの学校]
[検索と置換]ダイアログボックスを呼び出すマクロを作成
[開発]タブの[コード]グループにある[Visual Basic]をクリックします。
または、ショートカットキー[Alt]+[F11]を使用します。
参考[開発]タブを表示していない場合は、以下の記事を参照してください。
-
[開発]タブの表示とマクロのセキュリティ設定
Office2010から[開発]タブを表示する方法が変わりました。 Office2010以降は[オプション]ダイアログボックスの[リボンのユ ...
標準モジュールに入力
[挿入]メニューから[標準モジュール]をクリックして、に以下のように書き込みます。
Sub 名簿から検索()
Dim MOJI As String
MOJI = ActiveCell.Value 'アクティブセルの値をMOJIとする
Worksheets("組織表").Select '組織表シートを選択
Const find_replace = 1849 '検索と置換ダイアログボックスの呼出
Application.FindFormat.Clear '値のクリア
With Range("A:B") 'MOJIで部分検索 列方向の検索 半角と全角を区別しない
.Select
.Find What:=MOJI, LookIn:=xlValues, LookAt:=xlPart _
, SearchOrder:=xlColumns, MatchByte:=False
End With
Application.CommandBars.FindControl(ID:=find_replace).Execute
End Sub
[組織表]シートではなく、すべてのシートを対象にする場合は、[Worksheets.select]とします。
ダブルクリックで作成済みのマクロを呼び出し
そして、[名簿]シートの[BeforeDoubleClick]に以下の赤枠内のコードを入力します。
[Worksheet]と[BeforeDoubleClick]は、▼ボタンをクリックして選択してください。
これで、[名簿]シートでダブルクリックすると、[名簿から検索]マクロを呼び出すことができます。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Range("A:B")) Is Nothing Then Exit Sub
Call 名簿から検索
Cancel = True
End Sub
検索文字列の先頭の空白スペースを削除
検索元のセルの先頭に空白スペースがあると、
「検索と置換」ダイアログボックスの検索文字列のテキストボックスにも空白スペースが入り、「次を検索」ボタンを押す前に空白スペースを削除しなければなりません。
こういう場合は、[MOJI = ActiveCell.Value]を以下のように書き換えてください。
MOJI = LTrim(ActiveCell.Value)
文字列の先頭の空白を取り除きます。
2年ほど前に作っていたのですが、何かとお役立ちなので紹介させていただきました。
少しでもお役に立てれば幸いです。
参考マクロはほかのブックで実行できるようにアドインにしたり、個人用マクロブックに保存することもできます。
-
マクロを[Excelアドイン]として保存して他のブックで使用・配布する
面倒な作業であっても、少しでも効率よくミスがないように行いたいですね。 作業を自動化するマクロを作成しても、マクロはそのブックでしか動作しま ...
-
個人用マクロブックを作成してすべてのブックでマクロを利用するには
Excelでマクロを作成するときは、通常、作業中のブックに保存しますが、個人用マクロブックを作成すると、Excel起動時に常に起動されるので ...