プロが教えるわが家の防犯対策術!

Sheet1にA1からAS500までのデーターがあり
Sheet1上に配置できないため
Sheet2上につけたコマンドボタンから
Sheet1のA列に特定の文字列がある場合、その行を削除する
マクロをご指導ください。

A 回答 (4件)

Sheet2のA1セルに特定の文字列(消したい値)を入力して、次のマクロを実行してください。



Sub sample()
Dim r As Range
With Sheets("Sheet1").Range("A:A")
Set r = .Find(Sheets("Sheet2").Range("A1"), LookIn:=xlValues)
If Not r Is Nothing Then
.ColumnDifferences(r).EntireRow.Hidden = True
.SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp
.EntireRow.Hidden = False
End If
End With
End Sub
    • good
    • 1

質問です「特定の文字列がある場合」とは「特定の文字列を含む場合」ととらえてもよいのでしょうか?


たとえば、特定の文字「BC」のときは以下は該当しますか?
①「 BC」
②「BC 」
③「ABC」
④「B C」
⑤「bc」
    • good
    • 1

こんにちは!



Sheet2のコマンドボタンのコードを↓のような感じにしてみてはどうでしょうか?

Private Sub CommandButton1_Click()
Dim myFound As Range, myFirst As Range, myRng As Range
With Worksheets("Sheet1")
Set myFound = .Range("A:A").Find(what:="特定の文字列", LookIn:=xlValues, lookat:=xlWhole) '←「特定の文字列」は実際の文字列に!
If Not myFound Is Nothing Then
Set myFirst = myFound
Set myRng = myFound
Do
Set myFound = .Range("A:A").FindNext(after:=myFound)
If myFound.Address = myFirst.Address Then Exit Do
Set myRng = Union(myRng, myFound)
Loop
.Activate
myRng.EntireRow.Delete
MsgBox "完了"
Else
MsgBox "該当データなし"
End If
End With
End Sub

※ コード内の「特定の文字列」はコメントに書いている通り
実際の文字列に書き換えてください。m(_ _)m
    • good
    • 1

findメソッドでできませんか?


ヘルプのサンプルコードも多少ですがご質問と近い内容と言えるかも・・・

https://msdn.microsoft.com/ja-jp/library/office/ …
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!