Vba 发现价值;如果找到,移动到下一行并删除所有空行,直到找到下一个非空行

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

我有一个这样的电子表格:

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:=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编写整个应用程序,只是解决了提出的问题,不是吗?