重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

vba 初心者です。
入力シートとデータシートがあり
入力シートのa1に氏名、a2に番号が入ります。
そのデータがデータシートのa1,b1に入りa2b2,a3b3と
順に蓄積していくように作りました。

そのデータの中から同じ名前のデータを呼び出すものを調べて作れたのですが
出来たら同じ名前の同じ番号の検索ができるようにしたいのですがやり方が難しすぎてわかりません。
番号は同じ名前のものなら重複するデータは入らないようになっています。
違う名前なら同じ番号も入ります。
どなたか教えていただけますでしょうか。

Private Sub CommandButton3_Click()
Dim rngSearch As Range
Dim myRange As Range
Dim strMsg As String
Dim strAdr As String

With ThisWorkbook

Set myRange = .Worksheets("データ").Columns(1)

Set rngSearch = myRange.Find(What:=.Worksheets("入力").Range("a1"), LookAt:=xlWhole) '完全一致

If rngSearch Is Nothing Then

'1件もヒットしなかったらメッセージを表示する
MsgBox "該当するデータはありません。"

Else
'1件目を文字列にセット
strMsg = strMsg & vbCrLf & rngSearch

'ヒットした値のセルを退避
strAdr = rngSearch.Address
Do
Set rngSearch = myRange.FindNext(rngSearch)
If rngSearch Is Nothing Then
Exit Do
Else
If strAdr <> rngSearch.Address Then
strMsg = strMsg & vbCrLf & rngSearch
End If
End If

Loop While rngSearch.Address <> strAdr

MsgBox strMsg
End If

End With
End Sub

A 回答 (2件)

No1です



>もしよろしければその方法を教えていただけないでしょうか?
回答しようと思ったら、連呼してるみたいなので、そっちにおまかせした。
https://oshiete.goo.ne.jp/qa/11690990.html

方法は、No1の回答にすでに示してある通りなので、そのまま書けば良いだけだし…
    • good
    • 0
この回答へのお礼

助かりました

質問しておいてすみませんでした。
解決しました。ありがとうございます。

お礼日時:2020/06/08 12:56

こんばんは



変数 rngSearch にA列の一致したセルが取得できていると思いますので、取得したら、その行のB列の値と入力シートのA2セルの値を比較すれば良いと思われます。
rngSearch の右隣のセルは、rngSearch.Offset(,1) で取得出来ます。

あるいは、方法は変わってしまいますが、データシートの各行をループしてA列、B列の値がともに一致する行を探すという方法も考えられます。
こちらの方が考え方としては一般的かもしれません。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>データシートの各行をループしてA列、B列の値がともに一致する行を探すという方法
もしよろしければその方法を教えていただけないでしょうか?
そちらの方が一般的であるのなら私も解りやすいと思うので。
よろしくお願い致します。

お礼日時:2020/06/07 21:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!