VBAマクロ・・同一セルの検索と検索したセルの操作
VBAのほぼ初心者です。
決められたセル(たとえばE100)に入力された文字列と同一の文字列を
その列内の上(E1~E99)で検索する。
そして、検索できれば(たとえばE30)そのセルがある行(行30)を削除する。
なお、複数検索されれば、検索されたすべてのセルに対応する行を削除する。
というようなことをVBAのマクロで作成したいです。
FindメソッドとDo..Loop Whileを使って試行錯誤してみたのですが、うまくいきません。。
いい方法があれば、是非教えていただきたいです。
どうぞよろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
完全に寝ぼけた回答ですので前回の回答は無視してください。
(訂正版)
Sub 行削除()
Dim k As String, r As Range
k = [E100]: Set r = [E1:E99]
On Error GoTo er
Do: r.Find(k, lookat:=xlWhole).EntireRow.Delete: Loop
er:
End Sub
No.3
- 回答日時:
VBAでオートフィルタを使えば簡単ですが、Do~LoopとFindでもこれだけでOKです。
Sub 行削除()
On Error GoTo er
Do: [E1:E99].Find([E100], lookat:=xlWhole).EntireRow.Delete: Loop
er:
End Sub
E100と完全一致の行なら→lookat:=xlWhole (現在のまま)
E100と部分一致の行なら→lookat:=xlpart にしてください。
No.2
- 回答日時:
ヘルプのFINDメソッドの使用例に手を加えて以下のような感じでいかがですか
Sub test()
Dim mSelectRow As String
Dim c As Object
With Worksheets(1).Range("E1:E99")
Set c = .Find(Range("E100").Value, LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
mSelectRow = mSelectRow & c.Row & ":" & c.Row & ","
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
mSelectRow = Left(mSelectRow, Len(mSelectRow) - 1)
Range(mSelectRow).Delete Shift:=xlUp
End Sub
No.1
- 回答日時:
> 決められたセル(たとえばE100)
これをE1に、
> その列内の上(E1~E99)で
これをE2~E100にしたほうがよいですよ。
> 複数検索されれば、検索されたすべてのセルに対応する行を削除する。
ならば、最終行から2行目に戻る方向で実行しないと、どこまで見たかわからなくなりますよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Excel(エクセル) 指定値をマクロで検索&シート移動 2 2022/04/27 23:29
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Excel(エクセル) Excelでの検索結果を含む行だけを表示させたい 5 2023/03/10 17:08
- Visual Basic(VBA) Excle VBA Findメソッドについて 3 2022/07/15 13:56
- Excel(エクセル) Excelで関数を使って入力した値を、関数を抜いた値として扱いたい 1 2022/07/08 02:10
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) 【VBA】エクセルで選択した範囲の値のみをクリップボードにコピーするコードについて 3 2023/03/08 17:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
【Excel】指定したセルの名前で...
-
ExcelVBAを使って、値...
-
Excelで指定した日付から過去の...
-
EXCELで変数をペーストしたい
-
Excel vbaで特定の文字以外が入...
-
i=cells(Rows.Count, 1)とi=cel...
-
ExcelのVBAで数字と文字列をマ...
-
【VBA】指定したセルと同じ値で...
-
特定の文字を条件に行挿入とそ...
-
セル色なしの行一括削除
-
VBA実行後に元のセルに戻りたい
-
【VBA】シート上の複数のチェッ...
-
指定した条件で範囲選択したい
-
Excel VBA、 別ブックの最終行...
-
EXCELのVBA-フィルタ抽出後の...
-
実行時エラー438 オブジェクト...
-
先頭と末尾を指定して連続した...
-
EXCEL VBA 画面のロックについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel VBA】指定行以降をクリ...
-
Excelで指定した日付から過去の...
-
【Excel】指定したセルの名前で...
-
Excel vbaで特定の文字以外が入...
-
特定の文字を条件に行挿入とそ...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
Excelのプルダウンで2列分の情...
-
EXCELで変数をペーストしたい
-
連続する複数のセル値がすべて0...
-
Excel VBA、 別ブックの最終行...
-
VBAを使用した時間管理
-
エクセルVBAでコピーして順...
-
セル色なしの行一括削除
-
【EXCEL VBA】Range("A:A").Fi...
-
VBA コピーして次の値まで貼り...
-
VBA初心者です。結合セルを保持...
おすすめ情報