Vba 发现价值;如果找到,移动到下一行并删除所有空行,直到找到下一个非空行
我有一个这样的电子表格: A列Vba 发现价值;如果找到,移动到下一行并删除所有空行,直到找到下一个非空行,vba,excel,Vba,Excel,我有一个这样的电子表格: A列 Blank Blank Something Fax Number: Blank Blank Blank Next non empty row 我使用以下VBA代码在A列中查找我的值“传真号码”: Dim Rng As Range Set Rng = Range("A:A") Rng.Select Set cell = Selection.Find(What:="Fax Number:", After:=ActiveCell, LookIn:=xlFormul
Blank
Blank
Something
Fax Number:
Blank
Blank
Blank
Next non empty row
我使用以下VBA代码在A列中查找我的值“传真号码”:
Dim Rng As Range
Set Rng = Range("A:A")
Rng.Select
Set cell = Selection.Find(What:="Fax Number:", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If cell Is Nothing Then
'do it something
Else
Dim MyRange As Object
Set MyRange = cell.Offset(1, 0).End(xlDown).Row
MyRange.EntireRow.Delete
End If
如果找到,则应删除传真号码下方的所有空行,直到下一个非空行
给出这个结果:
Column A
Blank
Blank
Something
Fax Number:
Next non empty row
有人能告诉我哪里出了问题吗?我在:Set MyRange=cell.Offset(1,0).End(xlDown).Row
尝试下面的代码,不要使用Select
和Selection
Option Explicit
Sub UseFind()
Dim Rng As Range, C As Range
Set Rng = Range("A:A")
Set C = Rng.Find(What:="Fax Number:", After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If C Is Nothing Then
'do it something
Else
Dim LastRow As Long
Dim MyRange As Range
LastRow = C.Offset(1, 0).End(xlDown).Row - 1 '<-- get last row of Blank
Set MyRange = Range(C.Offset(1, 0), Cells(LastRow, C.Column)) '<-- set the deleted range
MyRange.EntireRow.Delete
End If
End Sub
选项显式
Sub-UseFind()
变暗Rng As范围,C As范围
设置Rng=范围(“A:A”)
设置C=Rng.Find(内容:=“传真号码:”,后面:=ActiveCell,LookIn:=xlFormulas,LookAt:=xlPart,SearchOrder:=xlByRows,SearchDirection:=xlNext,MatchCase:=False,SearchFormat:=False)
如果C什么都不是
“做点什么吧
其他的
最后一排一样长
将MyRange变暗为Range
LastRow=C.偏移量(1,0).结束(xlDown).行-1'为什么。选择何时可以执行范围(“A:A”)。查找?将选择保留到宏记录器。还有<代码>单元格
似乎未声明,是否指定了显式
选项。。如果当单元格为空时,您无事可做,那么为什么不改为单元格为空时,删除无用的空代码块呢?请您澄清一下在哪里出现错误,以及何时(编译时?运行时?)-确切的错误消息是什么?这在集合C=Rng.Find上给出了类型不匹配错误line@TylerH你复制了我的全部代码吗?还有变量声明?我复制了你的全部代码,并在电子表格中逐步完成,其中a列的值是从OP的post.Odd复制的;再运行一次就可以了。必须是,因为已经设置了Rng,并且存在前一个Rng之外的值。另外,希望这段代码只运行一次;如果您再次运行它,它将删除“下一个非空行”内容,因为它存储为以前要删除的空白单元格。@TylerH此代码可能会在多种情况下中断,我不是为PO编写整个应用程序,只是解决了提出的问题,不是吗?