Excel 当范围内有空白单元格时,从¿;如何避免这种情况?

Excel 当范围内有空白单元格时,从¿;如何避免这种情况?,excel,vba,Excel,Vba,我不知道这是否是问题所在,但我已经得出结论 当在范围中发现空白单元格时,宏将退出FOR循环,但这可能是另一个不同的问题 在任何情况下,我都想知道原因和如何解决它来学习,因为我没有vba的经验 使用此代码在目录中查找文件(路由名称由变量strLocation表示,该变量也包含D列中的文件名称),如果E列(用作范围的电子邮件列)已填充,则不会出现问题,但如果有空白单元格,则会发生奇怪的事情。显示错误消息,并跳过下一个单元格以退出 例如,在excel工作表中: 文件名(D单元)|电子邮件(E单元) 文

我不知道这是否是问题所在,但我已经得出结论

当在范围中发现空白单元格时,宏将退出FOR循环,但这可能是另一个不同的问题

在任何情况下,我都想知道原因和如何解决它来学习,因为我没有vba的经验

使用此代码在目录中查找文件(路由名称由变量strLocation表示,该变量也包含D列中的文件名称),如果E列(用作范围的电子邮件列)已填充,则不会出现问题,但如果有空白单元格,则会发生奇怪的事情。显示错误消息,并跳过下一个单元格以退出

例如,在excel工作表中:

文件名(D单元)|电子邮件(E单元)

文件名_1|example@hotmail.com

          |  example@hotmail.com
文件名\u 3|

文件名_4|example@gmail.com

文件名_5|example@gmail.com

当显示消息说第2行中的not filename后,转到退出For each的代码末尾,不要执行第3行中的下一个单元格。(从标题后的第1行开始计数,范围E2…)

'Comprobador PDF
私人分包商pdf\u点击()
将文件夹设置为字符串
Dim Rango作为范围,i作为长度,cell作为范围
带有工作表(“Formacion Acreditaciones”)
设置Rango=.Range(“E2”),.Range(“E2”).End(xlDown)).SpecialCells(xlCellTypeVisible)
以
Application.ScreenUpdating=False
作为字符串的Dim strLocation
对于Rango中的每个单元格
i=单元格。行
strLocation=f_ruta.Value&“\”和工作表(“Formacion Acreditaciones”).Cells(cell.Row,“D”).Value&“.pdf”
如果目录(strLocation)“,则
其他的
MsgBox“未找到,没有相应的文档PDF附件a:“&vbCrLf&cell.Offset(0,-1)。Value&vbCrLf&cell.Offset(0,-3)。Value&”,“&cell.Offset(0,-4)。Value&vbCrLf&vbCrLf&“Anótelo ahora y envíelo más tarde de forma manual Constructor de de de de correo.”,VBEquipment,“Error archivo adjunto”
转到下一站
如果结束
下一步:
下一个细胞
Application.ScreenUpdating=True
MsgBox“已完成,档案PDF定稿”,vbInformation,“档案档案资料”
端接头
我希望当一个单元格在范围内(列E)时,无论它是否包含数据,都可以作为行进行计数。因为我要比较的是D列的名称和目录中文件的名称,所以稍后通过电子邮件将其作为附件发送

这是我的全部代码:
提前谢谢。

您想从工作表底部上来,因为xlDown将在第一个空白处停止

With Worksheets("Formacion-Acreditaciones")
    Set Rango = .Range("E2:E" & .Cells(.rows.Count, "E").End(xlUp).Row).SpecialCells(xlCellTypeVisible)
End With

您希望从工作表底部向上,因为xlDown将在第一个空白处停止

With Worksheets("Formacion-Acreditaciones")
    Set Rango = .Range("E2:E" & .Cells(.rows.Count, "E").End(xlUp).Row).SpecialCells(xlCellTypeVisible)
End With

删除行
GoTo next\u compobacion
next\u compobacion:
。在
If Dir(strLocation)“”之后直接添加您想要执行的操作,然后
。在
之后以
结束添加这一行:
:Rango。选择:Stop
,您将看到
Rango
不包括过滤器中的所有行…删除行
转到下一个压缩
下一个压缩:
。在
If Dir(strLocation)“”之后直接添加您想要执行的操作,然后
。在
之后以
结束,添加这一行:
:Rango。选择:Stop
,您将看到
Rango
没有包含过滤器中的所有行……这有帮助吗?是的@QHarr,效果很好。但是你能详细说明代码吗?在microsoft文档中,我看不到xlUp和xlDown之间的区别。为什么要跳过空白单元格
Set Rango=.Range(“E2:E”和.Cells(.rows.Count,“E”).End(xlUp).Row.SpecialCells(xlCellTypeVisible)
Set Rango=.Range(“E2”、.Range(“E2”).End(xlDown)).SpecialCells(xlCellTypeVisible)
这是“E2:E”修复程序吗?这有帮助吗?是的@QHarr,效果很好。但是你能详细说明代码吗?在microsoft文档中,我看不到xlUp和xlDown之间的区别。为什么要跳过空白单元格<代码>设置Rango=.Range(“E2:E”和.Cells(.rows.Count,“E”).End(xlUp).Row.SpecialCells(xlCellTypeVisible)
设置Rango=.Range(“E2”、.Range(“E2”).End(xlDown)).SpecialCells(xlCellTypeVisible)
这是“E2:E”修复程序?