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

エクセルVBAについて
エクセルのある行に「2」という数字があったときに
その行を削除しなさいという
コードをつくる時に
以下のコードがネットにのっていましたが、それだと「2」だけではなく「12」など"2"がついてるすべての行をけしてしまいます。
なんとか「2」だけをピンポイントにけすエクセルVBAのコードをつくってください。
よろしくお願いいたします。

~以下のコード~
Sub Sample()
 Sheets("Sheet1").Select
 Do While (True)
  Columns("B:B").Select
  Set mySelect = Selection.Find(What:="2")
  If mySelect Is Nothing Then Exit Do
  Rows(mySelect.Row).Select
  Selection.Delete Shift:=xlUp
 Loop
End Sub

A 回答 (3件)

>それだと「2」だけではなく「12」など"2"がついてるすべての行をけしてしまいます。


消えないように思いますが、、、
一応、Selectionを除き書いてみました。。どうでしょう?

Sub Sample()
Dim mySelect As Range
  Sheets("Sheet1").Activate
  Do While (True)
    Set mySelect = Columns("B").Find _
    (What:=2, LookIn:=xlValues, LookAt:=xlWhole)
    If mySelect Is Nothing Then Exit Do
    Rows(mySelect.Row).Delete Shift:=xlUp
  Loop
End Sub
    • good
    • 0
この回答へのお礼

二回も詳しい回答、ありがとうございました。
おかげで「2」の行のみ消すことができました。

お礼日時:2020/05/25 01:53

こんにちは!



すでに的確な回答は出ていますが、別案です。
オートフィルタの方法になります。
尚、1行目は項目行でデータは2行目以降にあるという前提になります。

Sub Sample1()
 Dim lastRow As Long
  lastRow = Cells(Rows.Count, "B").End(xlUp).Row
   Range("B:B").AutoFilter field:=1, Criteria1:="2"
    If Cells(Rows.Count, "B").End(xlUp).Row > 1 Then
     Range(Cells(2, "B"), Cells(lastRow, "B")).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    End If
   ActiveSheet.AutoFilterMode = False
End Sub

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0

#1です。


示されているコードを触って書きましたけど、やはり気になりまして
追記回答します。
何行あるか分かりませんが、纏めて削除された方が良いと思います。
Findを使うなら、FindNextで複数を探すやり方で

Sub Sample1()
Dim myRange As Range, myObj As Range
Dim myCell As Range, HitCell As Range
  Set myRange = Columns("B")
  Set myObj = myRange.Find("2", LookAt:=xlWhole)
  If myObj Is Nothing Then Exit Sub
  Set HitCell = myObj
  Do
    If myCell Is Nothing Then
      Set myCell = HitCell
    Else
      Set myCell = Union(myCell, HitCell)
    End If
    Set HitCell = myRange.FindNext(HitCell)
  Loop While HitCell.Row <> myObj.Row
  myCell.EntireRow.Select          ’選択する
  '  myCell.EntireRow.Delete Shift:=xlUp  ’削除する
End Sub

サンプルは、選択のみです。
選択するを無効にして削除するを有効にしてください。
    • good
    • 0

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