重要なお知らせ

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

【GOLF me!】初月無料お試し

マクロ初心者で何もわかっておらず恐縮ですが、以下の内容に修正したいのでご教授お願い致します。

①sheet1のC5を検索窓とする
②sheet2,sheet3,sheet4のB列を検索対象として、C5に入力した値を検索
③ヒットした場合そのセルの行を選択
④全シート検索してヒットしなかった場合、"該当がありません。追加して下さい。"と表示

検索する値はsheet2,3,4のB列に1つのみ存在、もしくは存在しないの2通りです。
sheet2に複数や、sheet3とsheet4にもあるといったことは起こりえないのが前提です。

下記のマクロを作成したのですが、ほぼ知識がない状態なのでここからどうしていいかわかりません。

Private Sub CommandButton1_Click()

Dim Foundcell As Range

Set Foundcell = Range("B:B").Find(What:=Range("C5").Value)
If Foundcell Is Nothing Then
MsgBox "該当がありません。追加して下さい。"
Else
Foundcell.EntireRow.Select
End If
End Sub

何卒よろしくお願い致します。

A 回答 (2件)

こんばんは!



一例です。

Sub Sample1()
 Dim k As Long, c As Range, myFlg As Boolean
  For k = 2 To Worksheets.Count
   Set c = Worksheets(k).Range("B:B").Find(what:=Worksheets(1).Range("C5"), LookIn:=xlValues, lookat:=xlWhole)
    If Not c Is Nothing Then
     myFlg = True
     Exit For
    End If
  Next k
  If myFlg = True Then
   Worksheets(k).Activate
   c.EntireRow.Select
  Else
   MsgBox "該当データがありません、" & vbCrLf & "追加してください。"
  End If
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0
この回答へのお礼

まさに求めていたものでした!本当にありがとうございます!

お礼日時:2018/11/13 13:29

こんばんは。



No.1さんとは違うスタイルのものを作ってみました。
このコードにはひとつ欠陥があるのは、Match関数を使っているので、まったくおなじものでないと、正しくヒットしないということです。ワイルドカードが使えないということです。

'//
Private Sub CommandButton1_Click()
 Dim FindText As String
 Dim Ret As Variant
 Dim i As Long
 FindText = Me.Range("C5").Value
 For i = 2 To Worksheets.Count
  Ret = Application.Match(FindText, Worksheets(i).Range("B:B"), 0)
  If IsNumeric(Ret) Then
  Application.Goto Worksheets(i).Cells(Ret, 2)
  ActiveCell.EntireRow.Select
  Exit Sub
  End If
 Next
 MsgBox "該当がありません。追加して下さい。"

End Sub

こういうテクニックは時々使われますが、なかなか便利なものです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!非常に勉強になりました!

お礼日時:2018/11/13 13:35

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