• ベストアンサー

検索マクロ

こんにちは。 エクセル初心者で勉強中です。 今、下記のようなエクセルシートを作成しました。 シートの所々の列に”○”、”×”が入力されています。 ここで、VBAを作成し、”×”だけを検索し、メッセージボックスに 「×が4つあります・×のセル D5 F5 F6 J5」 というふうに表示したいのです。 検索はシートのすべてを検索すれば大丈夫です。 今、目視で検索しているので大変です。 どうぞよろしくお願いします。

この投稿のマルチメディアは削除されているためご覧いただけません。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

No.1です。 補足の件について・・・ データがない場合の処理をしていませんでしたね。 Sub test() Dim c As Range Dim str As String Dim vl As Variant For Each c In ActiveSheet.UsedRange If c = "×" Then str = str & WorksheetFunction.Substitute(c.Address, "$", "") & " " vl = vl + 1 End If Next c If vl = 0 Then MsgBox "×は0個です" Exit Sub Else MsgBox ("×は、" & vl & "個あります。" & vbCrLf & "セル番地は、" & str & "です。") End If End Sub こんなんではどうでしょうか?m(_ _)m

その他の回答 (3)

回答No.3

VBAの勉強なら この回答は無視してください >今、目視で検索しているので大変です。 個数はCOUNTIF関数を使えばよいし 条件付き書式のほうが見つけやすそうな気がする。 条件付き書式のオススメ活用法 http://allabout.co.jp/gm/gc/297742/

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

初心者がまずやるような課題ではない。 マクロでやるまでもなく操作で出来ること。 まず「課題ありき」(課題先行)でこういう課題を扱うのかもしれないが、初心者には難しい。 丸投げにならざるを得ない。少しでも質問者に勉強をしてもらうために、下記を書く。 検索の問題なのだが、FINDメソッドで記録される。編集ー検索はブックを対象に出来る。 (1)マクロの記録をとって勉強出来る。 コードのおおよそはそれでわかる。 コードの意味は下記WEB照会記事の解説などを見ること。 Googleで「VBA Find」で照会すればコード例が出る。 該当が複数見つかる場合だから、「VBA FindNext」でも照会する。 http://officetanaka.net/excel/vba/cell/cell11.htm このロジック(処理の仕組み)が、初心者には難しいと思う。 (2)メッセージボックスに・・・ Googleででも「VBA Msgbox」で照会したらしまい。 (3)「×が4つあります・・・・ ただし見つかった件数(セル数)は、自分で見つかった都度カウント(+1していく)しないとならないと思う。 >検索はシートのすべてを検索すれば大丈夫です 知らないから、こんな書き方をしているが、 エクセルの色々なケースで、全シートを(一斉に)対象に出来るのは、珍しいケースだということを、あらかじめ知っておいたほうが良い。1シート限りがまだまだ多いと思う。 ーー エクセルも進化しているので質問にはバージョンを書いて質問すること>

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! 一例です。 Sub test() Dim c As Range Dim vl As Variant Dim str As String For Each c In ActiveSheet.UsedRange If c = "×" Then '×は「ばつ」で変換しています。X(エックスではありません) vl = vl + 1 str = str & WorksheetFunction.Substitute(c.Address, "$", "") & " " End If Next c MsgBox ("×が、" & vl & "個あります。" & vbCrLf & "セル番地は、" & str & "です。") End Sub こんな感じではどうでしょうか? 尚、セル番地の表示順は1行目のA列からB列・C列・・・2行目のA列・B列・・・ と各行の列方向に向かって検索していきますので、その順位なってしまいます。m(_ _)m

aidorumary
質問者

補足

TOM04さん、ありがとうございました。 完璧でした。 追加で一つ質問なのですが ×が0個の場合、「×は0個です。」 というメッセージを出せることは できるのでしょうか。 すいません。

関連するQ&A