删除包含文件名的单元格上方的行

时间:2016-07-19 07:21:50

标签: excel vba

我正在开发一个电子表格,其中文件名位于列#34; 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 :(得分:0)

编辑:如评论中所述,我的原始代码只删除了上面的一行。以下是更正后的代码。我认为您的问题RowsActiveSheet有关,您应该有资格使用oSht

您可以将If块替换为:

If Not aCell Is Nothing Then
   oSht.Rows(1 & ":" & aCell.Row - 1).Delete
End If

请注意,EntireRows是不必要的,Rows已经返回整行。