[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAのCountifの使い方』(マロン)
ファイル「A」のシートBのA列(A5から最終行)の中に「C」という文字が含まれていた場合、その行を削除するというコードを作りたいのですが、Countifの行で「オブジェクトが必要です」というエラーが出てしまいます。
間違っている箇所をご教授頂けますでしょうか?
Dim ws As Worksheet
Set ws = Workbooks("A").Worksheets("B")
Dim LR As Long
LR = ws.Cells(Rows.Count, "A").End(xlUp).Row
For i = 5 To LR
Cells(i, 1).Select
If WorksheetFunction.CountIf(Cells(i, 1).Value, "*C*") Then
Cells(i, 1).EntireRow.Delete
End if
Next i
< 使用 Excel:Office365、使用 OS:Windows10 >
VBAのInStr関数を使用した方がよいと思うけど Countif関数の第1引数はセル参照(Rangeオブジェクト)です (Cells(i, 1).Valueだと値になります) (はまちゃん) 2021/05/24(月) 17:34
Sub 始まりも終わりもないマクロ() Dim i As Long
With Workbooks("A").Worksheets("B") For i = .Cells(.Rows.Count, "A").End(xlUp).Row To 5 Step -1 If .Cells(i, 1).Value Like "*C*" Then .Cells(i, 1).EntireRow.Delete End If Next i End With End Sub
ちなみに、対象セルを覚えておき、一括して削除するなら上からチェックでもOK
(逐一削除しない分、速度的には有利だが、 MyRNGに格納するセル範囲があまりにも細かく分かれているとちょっとマズイかも)
Sub 別案() Dim i As Long Dim MyRNG As Range
With Workbooks("A").Worksheets("B") For i = 5 To .Cells(.Rows.Count, "A").End(xlUp).Row Step 1 If .Cells(i, 1).Value Like "*C*" Then If MyRNG Is Nothing Then Set MyRNG = .Cells(i, 1) Else Set MyRNG = Union(MyRNG, .Cells(i, 1)) End If End If Next i End With
If Not MyRNG Is Nothing Then MyRNG.EntireRow.Delete End Sub
(もこな2 ) 2021/05/24(月) 18:59
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.