dポイントプレゼントキャンペーン実施中!

マクロの記録で任意の文字を検索して、見つかったセルから範囲を選択して別なシートへ切り取りし、貼り付けたいですが何か方法はありますか?現在は検索をしたセル番号になってしまいます。
マクロはじめたばかりです。

検索→い→(A2:C5)選択&切り取り→sheet2貼り付け→検索(sheet2)→え→(A3:C4)選択&切り取り→sheet3貼り付け
sheet1    →sheet2   →sheet3
 ABC     ABC    ABC
1あかさ    1いきし   1えけせ
2いきし    2うくす   2おこそ
3うくす    3えけせ
4えけせ    4おこそ
5おこそ

できれば検索で発見されたA2やA3を任意のアクティブセルにし、範囲はC列の一番下のセルを選択し切り取りたいのですができますでしょうか。

A 回答 (2件)

検索→い→(A2:C5)


といった操作を「マクロの記録」すると下記のようなコードが得られます。

Sheets("Sheet1").Select
Range("A1:A5").Select
Selection.Find(What:="い", after:=ActiveCell, LookIn:=xlFormulas, _
  LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
  MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate

コードの最後に、Activateメソッドが記録されています。
Findの結果、最初に見つかったセルをアクティブにする命令です。
上記コードの次の行に
MsgBox ActiveCell.Address
といれてみてください。
アクティブセル(Findの結果Activateされた)のAddress(セル番地)が返されます。

記録された、Findメソッドは注意が必要です。
SearchFormatオプションは、Excel2000以前にはなかったものです。
上記コードをExcel2000で動かすとエラーが発生します。
SearchFormatの部分を削除すればExcel2000でも動くと思います。
Afterオプションは、ここで設定されたセルの、次のセルから検索が開始されます。
Range("A1:A5").Select
の結果、ActiveCellはA1になります。
after:=ActiveCell
と記録されていますから、A1セルは最後にFindの対象セルになります。
検索対象範囲に同じデータがあると、場合によっては問題になる可能性があります。
試しに
Selection.Find(What:="い", after:=Selection.Cells(Selection.Count), LookIn:=xlFormulas, _
  LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
  MatchCase:=False, MatchByte:=False, SearchFormat:=False).Activate
とすれば最初のセルからFindされるようです。

変数を利用すれば、Activateしなくても良くなります。
Dim c As Range
Set c = Sheets("Sheet1").Range("A1:A5").Find(What:="い", _
  LookIn:=xlFormulas, after:=ActiveCell, LookAt:=xlPart, _
  SearchOrder:=xlByRows, SearchDirection:=xlNext, _
  MatchCase:=False, MatchByte:=False, SearchFormat:=False)
MsgBox c.Address


C列の最終行を取得する方法が、下記ページで詳しく解説されています。
No.8 ワークシートの最終行、最終列を取得する
http://www.niji.or.jp/home/toru/notes/8.html

取りあえず、ここまでにします。
    • good
    • 0

>できれば検索で発見されたA2やA3を任意のアクティブセルにし


アクティブにする意味は?
検索結果の確認と言う事?
検索するのは各シートA列のみ?

この回答への補足

遅くなりました。説明不足ですみません。
アクティブの認識は、検索結果の確認ではなく、
検索結果(い)だったらA2~C列の最終行まで、
検索結果(え)であれば、sheet1の場合A4~C列の最終行まで
検索結果で見つかった場所から範囲を選択したいということです。
説明がへたくそですみません。

検索するのは各シートA列のみです。

補足日時:2009/01/31 14:35
    • good
    • 0

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