ファイル名が "A"列のどこかにあるスプレッドシートで作業しています。私は、その場所を見つけて、ファイル名が見つかった行の上にあるすべての行を削除するコードを書こうとしています。しかし、私のコードで何かが間違っています&エラーrun time error "91" object variable or with block variable not set
が表示されます。ファイル名を含むセルの上の行を削除する
Option Explicit
Sub abcd()
Dim sourceCol As Integer, rowCount As Integer, currentRow As Integer
Dim currentRowValue As String
Dim oSht As Worksheet
Dim lastRow As Long
Dim strSearch As String
Dim aCell As Range
rowCount = 20
sourceCol = 1
lastRow = 22
strSearch = Left(ActiveWorkbook.Name, (InStrRev(ActiveWorkbook.Name, ".", -1, vbTextCompare) - 1))
Set oSht = Sheets(1)
Set aCell = oSht.Range("1:" & lastRow).Find(What:=strSearch, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If Not aCell Is Nothing Then
Rows(1 & ":" & aCell.Row - 1).EntireRow.Delete
End If
End Sub
ファイル名が行番号1にあるとどうなりますか?どのように行0を削除しますか?おそらくそれがあなたの問題です。 – cyboashu
@Nafisこの範囲設定の 'Set aCell = oSht.Range(" 1: "&lastRow)'はこのように使用できません。 "" Rangeを使う場合は "A5"のように設定する必要があります。数字が必要な場合はRange(Cells(Row、Col)、Cells(Row、Col))を使う必要があります。 ' –
速い応答に感謝しますが、私はすでにこの方法も疲れています。 Range( "A5:A10")OR行(1:5)に同じ問題が発生しても、 私のフォーマット名では行1には見つからないので、これを心配する必要はありません。 – Nafis