![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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ランキング
-
エクセルで 自動的に◯や数字を...
-
【マクロ】2回実行したら、エ...
-
エクセルのツールバーから数値...
-
特定の文字列を含む、住所を抽...
-
Excel 2019 [オプション]の[リボンのユ...
-
祝日と土曜、日曜の合計をカウ...
-
EXCELの散布図で日付が1900年に...
-
マイクロソフトのPADを使ってい...
-
絶対参照
-
エクセルでCtrl+Tでテーブルの...
-
【マクロ】名前を保存する際に...
-
エクセルのクイックアクセスツ...
-
【マクロ】VLOOKUPにて参照元に...
-
Excel分数の表示について
-
【EXCEL】画像の黄色部分の抽出...
-
DATE関数で現在の年齢を出した...
-
Excelについて
-
マクロエクセルのブロック解除
-
Excelピボットテーブルの1行目
-
REGEXREPLACE関数について、
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Twitterで垢消したら、投稿した...
-
知らない間に、私の投稿した質...
-
Cokkieを削除するコマンド(IE)...
-
教えてGOOが開けないことがある
-
前の質問の続きですが。 インタ...
-
住所を途中まで入れると、Googl...
-
自分の情報を検索エンジン(Goo...
-
ニコニコ動画削除の残骸
-
inauthor 何でしょうか?
-
パソコンの起動がとても重いのです
-
教えて!goo QNo.3117663 ...
-
検索すると表示される個人名を...
-
インスタの完全削除って削除依...
-
削除したい質問があり、お問い...
-
個人情報の削除代行業者
-
分からない問題の質問をしたら...
-
Yahooの掲示板で前40件が表示さ...
-
履歴は完全に消えますか?
-
ExcelVBA:複数の文字列を検索...
-
グーグル上でHPが消えません
おすすめ情報