私はあなたが最後のセルを見つけることxlDown
を使用している問題
のカップルを参照してください。最後の行を見つける方法については、THISのリンクを見ることをお勧めします。
Excelが参照しているシートを見つけることができないため、エラーRuntime Error 9 Subscript out of range
が表示されます。シートが存在することを確認してください。 Untitled
シートを視覚的に見ることができれば、シート名の先頭または末尾にスペースがあると思います。
この問題を解決すると、次のエラーはRuntime error 438: Object doesn't support this property or method
になります。それはcells
の代わりにcell
を使用しているためです。たとえば.cell(i, 1)
について.Cells(i, 1)
であるべきと.cell(i + 1, 1)
はSheets("Untitled")
が、その後Rows(i).Delete
が間違ったシートから削除されますアクティブなシートでない場合
.Cells(i + 1, 1)
が他のあなたのオブジェクトを宣言する必要があります。ループ内で行を削除
は避けてください)。コードが遅くなるだけです。私がどのようにdelRange
を以下のコードで使用したかを見てください。
はこれらの事を修正して、あなたは
注意を行ってもいいでしょう。
Option Explicit
Sub em()
Dim delRange As Range
Dim ws As Worksheet
Dim i As Long, LRow As Long
Set ws = ThisWorkbook.Sheets("Untitled")
With ws
LRow = .Range("A" & .Rows.Count).End(xlUp).Row
For i = LRow To 2 Step -1 '~~> Even 2 To LRow will work :)
If .Cells(i, 1) = .Cells(i + 1, 1) Then
If delRange Is Nothing Then
Set delRange = .Rows(i)
Else
Set delRange = Union(delRange, .Rows(i))
End If
End If
Next i
If Not delRange Is Nothing Then delRange.Delete
End With
End Sub
が、私は重複で第一値を削除したいです。 –
あなたはどの行がエラーを出すか、私の前提はコードがシートを見つけられない( "無題")と言うことができますか? – Davesexcel