質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

2回答

1875閲覧

VBAの「検索」ボタン押下で、該当のレコードを取得して一覧表示したい

shogakusha

総合スコア12

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2021/05/11 04:25

編集2021/05/12 00:44

前提・実現したいこと

VBAの「検索」ボタン押下で、「社員マスタ」シートを検索し、該当のレコードを取得して、「社員情報一覧」シートに一覧表示したいのですが、どのようにコードを書けば良いかわからず、悩んでいます。
以下のように実装したところ、無限ループになってしまいました。
アドバイスをいただけませんでしょうか。
よろしくお願いいたします。

該当のソースコード

VBA

1Sub Kensaku_Click() 2 3 Dim sht_shain As Worksheet 4 Set sht_shain = Worksheets("社員マスタ") 5 6 Dim sht_itiran As Worksheet 7 Set sht_itiran = Worksheets("社員情報一覧") 8 9 Dim FoundCell As Range 10 Set FoundCell = sht_shain.Range("A2:O1000").Find(Range("E3").Value) 11 12 Dim FirstCell As Range 13 14 If FoundCell Is Nothing Then 15 16 MsgBox "検索対象が見つかりませんでした。" 17 18 Else 19 Set FirstCell = FoundCell 20 FoundCell.Resize(1, 14).Copy sht_itiran.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) 21 End If 22 Do 23 Set FoundCell = Cells.FindNext(FoundCell) 24 If FoundCell.Address = FirstCell.Address Then 25 Exit Do 26 Else 27 FoundCell.Resize(1, 14).Copy sht_itiran.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) 28 End If 29 Loop 30 31End Sub

試したこと

キーワードを探して、対象が見つからない場合はメッセージを出すように書いてみました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

よくわかりませんが、こんな感じでどうでしょうか。

VBA

1Sub Kensaku_Click() 2 3 '社員マスタの桁目 4 Const Col_ID = "A" 5 Const Col_Name = "B" 6 Const Col_Busho = "C" 7 Const Col_TelNo = "D" 8 Const Col_Mail = "E" 9 10 '社員情報格納用 11 Dim shainID, shainName, ShainBusho, ShainTelNo, ShainMail 12 13 14 Dim sht_shain As Worksheet 15 Set sht_shain = Worksheets("社員マスタ") 16 17 Dim sht_itiran As Worksheet 18 Set sht_itiran = Worksheets("社員情報一覧") 19 20 Dim c As Range 21 Set c = sht_shain.Range("A2:O1000").Find(Range("E3").Value) 22 23 If c Is Nothing Then 24 25 MsgBox "検索対象が見つかりませんでした。" 26 27 Else 28 '社員情報取得 29 shainID = sht_shain.Cells(c.Row, Col_ID).Value 30 shainName = sht_shain.Cells(c.Row, Col_Name).Value 31 ShainBusho = sht_shain.Cells(c.Row, Col_Busho).Value 32 ShainTelNo = sht_shain.Cells(c.Row, Col_TelNo).Value 33 ShainMail = sht_shain.Cells(c.Row, Col_Mail).Value 34 35 '社員情報出力 36 sht_itiran.Range("E5").Value = shainID 37 sht_itiran.Range("E6").Value = shainName 38 sht_itiran.Range("E7").Value = ShainBusho 39 sht_itiran.Range("E8").Value = ShainTelNo 40 sht_itiran.Range("E9").Value = ShainMail 41 42 End If 43 44 45End Sub

投稿2021/05/11 10:16

jinoji

総合スコア4592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shogakusha

2021/05/12 00:45

ご回答、ありがとうございます。 こちらの方法でも試してみます。
guest

0

投稿2021/05/11 07:08

hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shogakusha

2021/05/12 00:45

ご回答、ありがとうございます。 上記を参考にFindNextを使用してみましたが、今度は無限ループになってしまいました。 アドバイスをいただけませんでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問