VBA初心者です。お教え下さい。
タイトル通り複数の文字列(例えば「aaa」)を検索し、行ごと削除したいのですが、以下のコードでは、「aaa」を検索せず、一番上の行から削除されてしまいます。。。
どこがどう間違ってるかわかりません。
どうかよろしくお願いします。
Private Sub CommandButton1_Click()
Dim StrkeyWord(10) As String '検索した文字列
Dim IngStartRow As Long '検索結果の行
Dim FoundCell As Range
Dim SearchArea As Range
Set SearchArea = ActiveSheet.UsedRange '検索対象範囲
Set FoundCell = SearchAea.Find(what:=trkeyWord) '検索実行
If FoundCell Is Nothing Then Exit Sub '検索文字列が含まれるセルがない場合中断
StrkeyWord(1) = "aaa"
StrkeyWord(2) = "bbb"
StrkeyWord(3) = "ccc"
StrkeyWord(4) = "ddd"
StrkeyWord(5) = "eee"
StrkeyWord(6) = "fff"
StrkeyWord(7) = "ggg"
StrkeyWord(8) = "hhh"
StrkeyWord(9) = "iii"
StrkeyWord(10) = "jjj"
For i = 1 To 10
Cells.Find(what:=StrkeyWord).Activate '検索
IngStarRow = ActiveCell.Row '検索結果の行からの削除の場合
Rows((Str(IngStartRow)&":"&Cstr(IngStartRow)),Delete Shift :=xlUp '削除
End Sub
No.1ベストアンサー
- 回答日時:
こんばんは。
この全体のコードの設計の発想は、初心者の方には無理です。ミスしそうな部分が一杯ありすぎます。アイデア自体は否定しませんが、初心者の方には、難しすぎます。
Private Sub CommandButton1_Click()
Dim StrkeyWord(10) As String
Dim FoundCell As Range
Dim FirstCell As String
Dim SearchArea As Range
Dim UArea As Range 'Union でまとめていく
Dim i As Long
Dim j As Long
Set SearchArea = ActiveSheet.UsedRange '検索対象範囲
StrkeyWord(1) = "aaa"
StrkeyWord(2) = "bbb"
StrkeyWord(3) = "ccc"
StrkeyWord(4) = "ddd"
StrkeyWord(5) = "eee"
StrkeyWord(6) = "fff"
StrkeyWord(7) = "ggg"
StrkeyWord(8) = "hhh"
StrkeyWord(9) = "iii"
StrkeyWord(10) = "jjj"
Application.ScreenUpdating = False
With SearchArea
For i = 1 To 10
Set FoundCell = .Find( _
What:=StrkeyWord(i), _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchDirection:=xlNext)
If Not FoundCell Is Nothing Then
Set UArea = FoundCell
FirstCell = FoundCell.Address
Do
Set FoundCell = .FindNext(FoundCell)
If FirstCell = FoundCell.Address Then Exit Do
Set UArea = Union(UArea, FoundCell)
Loop Until FoundCell Is Nothing
End If
If Not UArea Is Nothing Then
For j = UArea.Areas.Count To 1 Step -1
UArea.Areas(j).EntireRow.Delete
Next
End If
Set UArea = Nothing
FirstCell = ""
Next i
End With
Application.ScreenUpdating = True
Set SearchArea = Nothing
End Sub
お礼が遅くなり申し訳ありません。
思い通りの動きが確認できました!
ありがとうございます!
初心者には、難しい・・・。
コードを見て実感しました。
もっと勉強していきたいと思います!
No.2
- 回答日時:
こんなアルゴリズムはどうでしょうか。
どうせ消す行ですから、まず検索文字がある行のA列に削除サインを書き込みます。その後で削除サインが立っている行だけ削除します。
Private Sub CommandButton1_Click()
Dim StrkeyWord(10) As String '検索した文字列
Dim FoundCell As Range
Dim FirstAdrs As String
Dim SearchArea As Range
Dim i As Integer
Set SearchArea = ActiveSheet.UsedRange '検索対象範囲
StrkeyWord(1) = "aaa"
StrkeyWord(2) = "bbb"
StrkeyWord(3) = "ccc"
StrkeyWord(4) = "ddd"
StrkeyWord(5) = "eee"
StrkeyWord(6) = "fff"
StrkeyWord(7) = "ggg"
StrkeyWord(8) = "hhh"
StrkeyWord(9) = "iii"
StrkeyWord(10) = "jjj"
For i = 1 To 10
Set FoundCell = SearchArea.Find(StrkeyWord(i), LookIn:=xlValues)
FirstAdrs = ""
If Not FoundCell Is Nothing Then
FirstAdrs = FoundCell.Address
Do
Cells(FoundCell.Row, 1).Value = "DEL"
Set FoundCell = SearchArea.FindNext(FoundCell)
Loop Until FoundCell.Address = FirstAdrs
End If
Next i
For i = Range("A65536").End(xlUp).Row To 1 Step -1
If Cells(i, 1) = "DEL" Then
Rows(i).Delete
End If
Next i
End Sub
お礼が遅くなり申し訳ありません!
こうゆう考え方もあるのだ、と感心しました。
思いつきもしませんでした。。。
もっと勉強していきたいと思います!
ありがとうございました!!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Excel(エクセル) 指定文字列が該当するA列をアクティブセルにするには 3 2022/08/17 13:18
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) ワークブック内すべて検索 2 2022/12/20 20:13
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
住所を途中まで入れると、Googl...
-
マイページの出し方が分かりま...
-
ワードで直径4cmの円を作成...
-
プログラミング初心者です。 Wi...
-
アイコンに、四角い枠が出来て...
-
PCのグーグルマップで現在地が...
-
エクセル文字列で縦書きカタカ...
-
Windows Defender Scheuled Sca...
-
DELLのパソコンで大文字小文字...
-
NHKプラスをTVチューナーが無く...
-
メールソフト「Thunderbird」で...
-
2週間ほど前からtokyomotionと...
-
E-mailの署名について
-
ネットの画面とエクセル画面を...
-
パソコンの画面の大きさが変わ...
-
パソコンから、いきなり警告音...
-
何故か本日からMcAfee の警告が...
-
パソコンの画面が上半分だけし...
-
リンクに飛べる様にする際 「C...
-
パソコンの画面上に黒い四角が...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ネット検索1,3位にきてるど...
-
削除したい質問があり、お問い...
-
inauthor 何でしょうか?
-
質問の削除について 宿題につい...
-
検索すると表示される個人名を...
-
Cokkieを削除するコマンド(IE)...
-
ExcelVBA:複数の文字列を検索...
-
マイページの出し方が分かりま...
-
ワードで直径4cmの円を作成...
-
エクセル文字列で縦書きカタカ...
-
Windows Defender Scheuled Sca...
-
パソコンの画面上に黒い四角が...
-
E-mailの署名について
-
2週間ほど前からtokyomotionと...
-
パソコンから、いきなり警告音...
-
Google Chrome インターネット...
-
PCのグーグルマップで現在地が...
-
アイコンに、四角い枠が出来て...
-
ヤフー。トップページに戻ると1...
-
検索でクリックした時、一番上...
おすすめ情報