忽略范围内的空白

时间:2018-01-24 12:34:48

标签: excel vba excel-vba

有人可以帮助这段代码的最后一位,我有一个范围最大值(" A1:A54")当我设置到这个范围并且只有(A1:A10)有一个单元格值这是另一个工作簿中工作表的名称。

此代码正常运行但返回

  

运行时9错误

我真的想添加如果空白忽略如果我改变到我设置为A1的范围:A10然后没有错误。我想可能是其他工作簿中没有工作表,这就是我在这个循环中出错的原因。

看过如何忽略空白,但我找到的答案都没有。

我真的想要一个if cell =""然后忽略当前我认为退出子将工作      Sub Iedextraction()

 Dim wkb As Excel.Workbook, wkb1 As Excel.Workbook
 Dim wks As Excel.Worksheet, wks1 As Excel.Worksheet
 Dim cell As Range
 Dim rng As Range

Workbooks.Open Filename:= _
 "D:\Projects\ASE Templates\ASE Template White Book.xlsx"

Set wkb = Excel.Workbooks("ASE RTU Addressing with Automation.xlsm")
Set wks = wkb.Worksheets("Tab Names from White book")
Set wkb1 = Excel.Workbooks("ASE Template White Book.xlsx")

Set rng = wks.Range("A1:A54")


For Each cell In rng

wkb1.Sheets(cell.Value).Copy After:=Workbooks_
("ASE RTU Addressing with Automation.xlsm").Sheets(4)

If cell = "" Then Exit Sub

 Next

' On Error GoTo 0
End Sub

3 个答案:

答案 0 :(得分:1)

添加条件指令:

If cl <> "" Then wkb1.Sheets(cell.Value).Copy After:=Workbooks _
("ASE RTU Addressing with Automation.xlsm").Sheets(4)

并删除:

If cell = "" Then Exit Sub   

答案 1 :(得分:0)

您的错误很可能是因为您在进行检查之前尝试复制。因此,最后,您尝试获取没有名称的工作表。 :)

答案 2 :(得分:0)

使用动态范围是更好的做法,因为它可能会在未来某个时候发生变化。有多种方法可以做到这一点,但我的方法是这样的:

Dim rn As Range
Set rn = Range(Range("A1"), Range("A1").End(xlDown))

因此,您的问题将得到解决(假设空白单元格确实为空),您不必测试空白单元格。

无论如何,如果他们解决了您的问题,您应该将上述答案之一标记为正确。