• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロ 検索できなかった検索値を表示したい)

マクロで検索できなかった検索値を表示したい

このQ&Aのポイント
  • C列を複数の検索値で検索して見つからなかった検索値が一つでもあればその検索値をメッセージBOXに表示し、同じ処理をしたいです。
  • 自力で試したコードでは複数の検索値に対して同じ処理を6回も記述しており、メンテナンスが困難です。
  • また、記述順で最初に見つからなかった検索値だけしか表示できず、他に方法はないかどうか相談したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

sub macro1()  dim 範囲 as range, rngFind as range  dim i as integer  dim a as variant  a = array("みかん","りんご","バナナ","いちご","すいか","メロン")  set 範囲 = thisworkbook.worksheets("マスタ").range("C:C")  for i = 0 to ubound(a) ’以下はオリジナルの流用   Set rngFind = 範囲.Find(a(i))   If rngFind Is Nothing Then   MsgBox "ファイル【" & a(i) & "】が取込まれていません。", vbExclamation, "【警告】"   MsgBox "今までの作業を保存しないで" & vbCrLf & _   "プログラムを終了します", vbExclamation, "終了"   MsgBox "ただし【マスタ】はすでに削除されています。 " & vbCrLf & _   "必ず【マスタ更新】をやり直してください。", _   vbExclamation, "注意してください"   ThisWorkbook.Sheets("マスタ").Select   Cells.Select   Selection.Delete Shift:=xlUp   Range("A1").Select   ThisWorkbook.Sheets("メニュー").Select   Range("A2").Select   End '終了   End If  next i end sub #実際にはみかんやりんごなどの生データはプログラム中にコーディングせず,チェック対象データとして一枚シートを用意してデータとして記入しておいて,巡回してチェックするような仕込みが推奨と思います。

gx9wx
質問者

お礼

お礼が遅れてすいません。 上手く対応できました。助かりました。 どうもありがとうございました。

その他の回答 (1)

  • jcctaira
  • ベストアンサー率58% (119/204)
回答No.2

gx9wxさん こんにちは。 以下の処理でできるかと思います。   Sub 実験2()  Dim I       As Integer  Dim 検索ファイル As Variant  Dim 未取得    As String    検索ファイル = Array("みかん", "りんご", "バナナ", "いちご", "すいか", "メロン")  With ThisWorkbook.Worksheets("マスタ")   For I = 0 To UBound(検索ファイル)    If .Range("C:C").Find(検索ファイル(I)) Is Nothing Then     未取得 = 未取得 & vbCrLf & "・" & 検索ファイル(I)    End If   Next I   If 未取得 <> "" Then    MsgBox "以下のファイルが取り込めていません。" & 未取得, vbExclamation, "【警告】"    MsgBox "今までの作業を保存しないで" & vbCrLf & _        "プログラムを終了します", vbExclamation, "終了"    MsgBox "ただし【マスタ】はすでに削除されています。 " & vbCrLf & _        "必ず【マスタ更新】をやり直してください。", vbExclamation, "注意してください"    .Select    Cells.Delete Shift:=xlUp    Range("A1").Select    ThisWorkbook.Sheets("メニュー").Select    Range("A2").Select    Exit Sub '終了   End If  End With  ' 全て検索できた場合は次の処理を行う。  '     ↓ End Sub

gx9wx
質問者

お礼

お返事送れてすいません。 思ったとおりに動きました。 ありがとうございました。

関連するQ&A

専門家に質問してみよう