質問: エクセルのマクロで検索 教えてください。 エクセルにいろいろなセルに文字列が並んでいます。 フォームを作成し、テキストに文字列1、文字列2を指定します。 そこからある文字列1を検索し、もし見つかればその見つかった文字列1の右のセルに指定した文字列2を挿入したいのです。右のセルに文字列3がすでにある場合はその文字列3の下のセルに文字列2を挿入します。 もしみつからなければ、aの一番下のセルに文字列2を挿入します。 といったプログラムをコーディングしたいのですが、マクロに関しては初心者です。vbは少しなら分かります。 できれば分かりやすく教えて頂けないでしょうか。 よろしくお願いします。
回答: 再びno.1です。 >シートの入力のあるセルの1番下の列(aであるとは限らない) それなら、currentregionプロパティでしょうか。 currentregionはアクティブセル領域を選択するプロパティです。 (アクティブセル領域についてはヘルプを参照。) a1を含むアクティブセル領域は、 range("a1").currentregion になり、 range("a1").currentregion.rows.count で、この範囲の行数を取得出来ます。 したがって、範囲の先頭が1行目なので、 cells(range("a1").currentregion.rows.count, 1) でデータ最下行のa列のセルを、 cells(range("a1").currentregion.rows.count + 1, 1) でデータ最下行のすぐ下のa列のセルを参照することになります。 ただし、途中にまったく入力がない行があると、正しいアクティブセル領域を取得することは出来ません。 (どこか1項目にでもデータが入っていればok。) このような場合がある場合は、仕方がないので、範囲の全列に対して、 endプロパティで最下行を求めて、それらの最大値を最下行とするくらいですね。