我正在开发一个电子表格,其中文件名位于列#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
答案 0 :(得分:0)
编辑:如评论中所述,我的原始代码只删除了上面的一行。以下是更正后的代码。我认为您的问题Rows
与ActiveSheet
有关,您应该有资格使用oSht
。
您可以将If
块替换为:
If Not aCell Is Nothing Then
oSht.Rows(1 & ":" & aCell.Row - 1).Delete
End If
请注意,EntireRows
是不必要的,Rows
已经返回整行。