|
▼next さん:
こんにちは
既に皆さんからコメントがありますが、行を削除する場合は
【下から攻める】が定番です。
ところで、不要な行を削除するという方式ではなく【必要な行を残す】という発想で。
ループ回数も若干少なくなっています。
Sub Sample()
Dim k As Long
Dim x1 As Variant
Dim x2 As Variant
Dim x3 As Variant
Dim myA As Range
Dim myR As Range
Dim v As Variant
With ActiveSheet.UsedRange
Set myA = Range("A1", .Cells(.Cells.Count))
End With
ReDim v(1 To myA.Rows.Count)
For Each myR In myA.Rows
x1 = Application.Match("名称", myR, 0)
x2 = Application.Match("工事番号", myR, 0)
x3 = Application.Match("小計", myR, 0)
If Not IsNumeric(x1) And Not IsNumeric(x2) And Not IsNumeric(x3) Then
k = k + 1
v(k) = WorksheetFunction.Index(myR, 1, 0)
End If
Next
ReDim Preserve v(1 To k)
Cells.ClearContents
Range("A1").Resize(k, myA.Columns.Count).Value = _
WorksheetFunction.Transpose(WorksheetFunction.Transpose(v))
Set myA = Nothing
MsgBox "完了"
End Sub
|
|