Union
後で削除する必要があるデータと特定の行番号をループしようとしています。以下のコードは正しい行を保存しますが、削除できません。データがテーブルにない場合は目的の行を削除できるため、データがテーブルに配置されているためだと思います。'run time error 1004 - delete method of range class failed'
行にエラー メッセージが表示されますUrng.delete
。
Sub DeleteRows()
Dim ws4 As Worksheet: Set ws4 = Worksheets("Sheet1")
Dim LastRow As Long
Dim CurrentRow As Long
Dim GroupValue
Dim GroupTotal As Long
Dim x As Long
Dim Urng As Range
Application.ScreenUpdating = False
ws4.Activate
GroupValue = ws4.Range("B6").Value
CurrentRow = 6 LastRow = ws4.Cells(Rows.Count, "B").End(xlUp).Row
Set Urng = Rows(LastRow + 1)
For x = 1 To LastRow
GroupTotal = Application.WorksheetFunction.CountIf(Range("B6:B" & LastRow), GroupValue)
If GroupTotal = 1 Then
Set Urng = Union(Urng, Rows(CurrentRow))
End If
CurrentRow = CurrentRow + GroupTotal
GroupValue = Range("B" & CurrentRow).Value
If GroupValue = "" Then '
Exit For
End If
Next x
Urng.Delete
Application.ScreenUpdating = True
End Sub
運悪く使ってみました.EntireRow.Delete
。
Unions
テーブルの外にはデータがないので、テーブルの行だけを削除することで解決できるかもしれませんが、 で行番号を使用できない場合、行番号のループを構築する方法がわかりませんUnion(Urng, Rows(CurrentRow))
。
行の一部がテーブルである複数の行全体を削除する VBA ソリューションはありますか?