アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

ネットで調べたら僕のやりたいことと同じようなコードを発見したので少し変えてみたら
データシートのA列の中からa1の名前と位置するデータの行をすべて取得するものができました。

出来たらその複数ある行の中のB列の番号がa2の番号と一致する行を取得できるようなものにしたいのですが
どうしたらいいか教えていただけないでしょうか?

同じ名前のデータの中に重複する番号は入らないようになっています。
違う名前なら同じ番号も入ります。
なので最終的に取得する行は同姓同名でない限り一個になります。

説明がややこしくすみません。
初心者なのでできるだけわかりやすく教えていただけたら有難いです。
よろしくおねがいします。

Private Sub CommandButton1_Click()
Dim rng As Range
Dim adr As String ' 最初に見つかったセルのAddress

Set rng = Worksheets("データ").Columns(1).Find(Range("a1"))
If rng Is Nothing Then
MsgBox "見つかりませんでした。"
Exit Sub
Else
adr = rng.Address
MsgBox rng.Row
End If
Do
Set rng = Worksheets("データ").Columns(1).FindNext(After:=rng)
If rng.Address = adr Then
Exit Do
Else
MsgBox rng.Row
End If
Loop

End Sub

A 回答 (2件)

蓄積していくことと行の検索の関係が不明なのですが?



登録したいデータが既に存在しているか?を調べるとしたら、最初に楽なのは使用していない列『仮にD列』としたとき、
D1 =A1&B1 と数式を入れ下にフィルコピー。
この連結させた値を探すってのも昔ですが定番でしたね。FindメソッドででもCountIf関数ででも調べる事は可能でしょうし。
    • good
    • 0

>ネットで調べたら僕のやりたいことと同じようなコードを発見したので少し変えてみたら


データシートのA列の中からa1の名前と位置するデータの行をすべて取得するものができました。
意味を理解しようと調べれば、やりたい事は簡単だと思いますが、改造したものを書きます。理解しなければ
同じ繰り返しになるので、頑張ってくださいね。
1つ掲示のコードで不具合が出そうな箇所も手を加えておきました。
余分な事もしていますので、しっかり直してください。
日曜の深夜なので、説明は割愛します。

Private Sub CommandButton1_Click()
Dim rng As Range
Dim adr As String    ' 最初に見つかったセルのAddress
Dim nKey: nKey = Sheets("入力").Range("A2")
  Set rng = Worksheets("データ").Columns(1).Find(Sheets("入力").Range("a1"))
  If rng Is Nothing Then
   MsgBox "見つかりませんでした。"
   Exit Sub
  Else
   adr = rng.Address
   If rng.Offset(, 1) = nKey Then
    MsgBox ("名前:" & rng.Value & vbCrLf & _
       "№:" & rng.Offset(, 1) & vbCrLf & _
       "行番号:" & rng.Row)
    Worksheets("データ").Select
    rng.Select
   End If
  End If
  Do
   Set rng = Worksheets("データ").Columns(1).FindNext(After:=rng)
   If rng.Address = adr Then
    Exit Do
   Else
    If rng.Offset(, 1) = nKey Then
      MsgBox ("名前:" & rng.Value & vbCrLf & _
        "№:" & rng.Offset(, 1) & vbCrLf & _
        "行番号:" & rng.Row)
      Worksheets("データ").Select
      rng.Select
    End If
   End If
  Loop
End Sub
    • good
    • 0
この回答へのお礼

助かりました

ありがとうございました!助かりました。

お礼日時:2020/06/08 13:00

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