• ベストアンサー

エクセルで特定の行をマクロで削除したい。

Sub DelLines() Dim R As Range Do Set R = ActiveSheet.Range("A:A").Find(What:="ここにキーワード", LookAt:=xlPart) If R Is Nothing Then Exit Sub R.EntireRow.Delete Loop End Sub 上記のソースだと一つのキーワードだけなのですが、複数のキーワードを追加したいのとブック全体(複数のシートから検索)で実行させたいのですが教えていただけませんか?

質問者が選んだベストアンサー

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.2

例えば、a,b,cを探すなら Sub try() Dim ws As Worksheet Dim r As Range Dim v For Each ws In Worksheets For Each v In Array("a", "b", "c") Do Set r = ws.Range("A:A").Find(What:=v, LookAt:=xlPart) If r Is Nothing Then Exit Do r.EntireRow.Delete Loop Next Next End Sub とか?

goo0607
質問者

お礼

ありがとうございました。思っていたのと違うかったので、もう一度マクロ勉強しなおします・・・

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.5

質問のコードでは、そのキーワードが複数出現するデータなら、最初しか削除できないのでは。FindNextお勉強のこと。 ーー >ブック全体 1つのブックの全シートの意味か。 フォルダのエクセルブックの全体とかの意味か。 プログラマは表現に敏感であれ。 ーー >複数のシート これもあるブックで、10有るシートのうちの3つとかの意味か。全シートの意味か。 前者は Sub test01() Dim sh As Worksheet For Each sh In Worksheets(Array("Sheet1", "Sheet3", "Sheet4")) MsgBox sh.Name '本来は各1シート分の処理のコードを入れる Next End Sub 後者は Sub test02() Dim sh As Worksheet For Each sh In Worksheets MsgBox sh.Name '本来は各1シート分の処理のコードを入れる Next End Sub ーー フォルダの全ブックは、VBSを使う場合(他にDir関数を使うなどもある) Sub test03() infolderName = CurDir Set objfs = CreateObject("Scripting.FileSystemObject") Set fsoFolder = objfs.GetFolder(infolderName) For Each file In fsoFolder.Files 'Foler内のファイルを列挙する Fname = file.Name MsgBox file.Name If objfs.GetExtensionName(Fname) = "xls" Then '拡張子xlsを判定 MsgBox fsoFolder & "\" & Fname End If Next End Sub ーー 指定ブックを開く場合 CurDirの中のファイル2つとして Sub test04() For Each bn In Array("01化.xls", "book1.xls") MsgBox bn Workbooks.Open bn MsgBox Workbooks(bn).Worksheets(1).Range("A1") Workbooks(bn).Close Next End Sub ーー それぞれを適当に入れ子にしてコードを作る。

goo0607
質問者

お礼

表現が微妙であったことをお詫びいたします。 一つのブックの全てのシートに適用でした。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.4

>もちろんもっと簡潔な方法もあるとおもいます。 てn-junさんがすでに提示されてますね。 失礼しました。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.3

Or検索ですね。 私は、こういう場合はLike演算子を使います。 If A Like "*AA*" Then で、変数Aに"AA"が含まれていたら、という意味になります。 これを検索キーワードの分だけ繰り返します。 最初はFalseにしておき全て含まれていたら、Trueとすればいいです。 もちろんもっと簡潔な方法もあるとおもいます。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

>複数のキーワード たとえば、 AA BB というキーワードだとしたら、AA、BBとも含まれているのか、 AA、BBいずれかが含まれていたら、なのか不明です。

goo0607
質問者

補足

AA,BBいずれかが含まれていたらです。説明不足ですいませんでした。

関連するQ&A