
マクロの記録で任意の文字を検索して、見つかったセルから範囲を選択して別なシートへ切り取りし、貼り付けたいですが何か方法はありますか?現在は検索をしたセル番号になってしまいます。
マクロはじめたばかりです。
検索→い→(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列の一番下のセルを選択し切り取りたいのですができますでしょうか。
No.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
取りあえず、ここまでにします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Excel(エクセル) エクセルのマクロが上手く動きません 4 2022/07/14 13:25
- Excel(エクセル) Excelでの検索結果を含む行だけを表示させたい 5 2023/03/10 17:08
- Excel(エクセル) Excel フィルタ後のコピー貼付けと可視セルの関係について 3 2023/02/07 16:42
- Excel(エクセル) 余計なお世話的な「入力規則」?対策は? 2 2023/01/14 12:39
- Excel(エクセル) 【VBA】エクセルで選択した範囲の値のみをクリップボードにコピーするコードについて 3 2023/03/08 17:41
- Excel(エクセル) マクロでボタンにつける名前がどこに設定されているかわからないケースがありました。 1 2023/06/19 19:37
- Visual Basic(VBA) シート間で同じ値があったら指定範囲をコピーして貼り付け 1 2022/11/07 08:01
- その他(Microsoft Office) 選択行の列範囲に二重線を引く 3 2022/06/08 12:21
- Excel(エクセル) Excelに文字データのみを貼り付けたい 8 2023/05/03 15:38
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでの SendKeysの変数指定方法
-
Excelマクロ セルを行頭に移動
-
マクロのデータ削除
-
vbaで指定したセルより下の行を...
-
結合セル内の値を、結合解除後...
-
選択されたセルが赤くなる方法...
-
エクセルでセルをクリックする...
-
【マクロ】実行時エラー '424':...
-
【VBA】2つのシートの値を比較...
-
VBA 別ブックからコピペしたい...
-
「段」と「行」の違いがよくわ...
-
VBA シートをコピーする際に Co...
-
Excel UserForm の表示位置
-
特定の文字がある行以外を削除...
-
Worksheets メソッドは失敗しま...
-
マクロの「SaveAs」でエラーが...
-
指定値をマクロで検索&シート移動
-
VBA マクロ エラー1004 アプ...
-
別ブックをダイアログボックス...
-
excel vbaのエラー原因について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vbaで指定したセルより下の行を...
-
エクセルでセルをクリックする...
-
VBAでの SendKeysの変数指定方法
-
Excel VBA:フォーム←→セルのア...
-
エクセルマクロで「セルのサイ...
-
Excelマクロ セルを行頭に移動
-
マクロのデータ削除
-
セルをクリックしたら色を変え...
-
IF関数で違う値もTRUEになる
-
Excel VBA で色付きのセルの値...
-
excel マクロでの特殊文字入力方法
-
【EXCEL-VBA】特定の値の入った...
-
(エクセルVBA)セルを左クリッ...
-
ロックされていないセル内をクリア
-
ダブルクリックでセルに色をつ...
-
ファイルサーバー上のexcelファ...
-
Excelでプルダウンからフィルタ...
-
VBA Rangeの足し算
-
【VBA】アクティブセルだけ背景...
-
ExcelVBA コンボボックスに入力...
おすすめ情報