删除表格的循环会收到运行时错误

时间:2015-09-25 16:54:37

标签: excel-vba for-loop vba excel

我创建了一个for循环来从工作簿中删除工作表。代码块添加工作簿并计算该工作簿中的工作表数量,默认情况下通常为三(3)。因此,根据IF函数,它应该删除sheet2和sheet 3.但是,它会在删除sheet2后出现运行时错误。我是VBA的初学者,我不知道该怎么做。请帮忙。非常感谢你。 (注意:如果c等于2,它可以正常工作并删除sheet3。只有当c等于1时才会出错。)

      c= 1
      Dim Wbk As Workbook
      Set Wbk = Workbooks.Add
      i = Wbk.Worksheets.count = 3
      Application.DisplayAlerts = False
      If c < i Then
         For j = (c + 1) To 3
          Sheets(j).Delete
         Next j
      ElseIf c > i Then
      Wbk.Worksheets.Add after:=Wbk.Worksheets("sheet3"), count:=(c - i)
      Else: End If

1 个答案:

答案 0 :(得分:0)

表单的索引从1开始。因此,3张表的工作簿为1-3。这里的问题是,一旦你删除第二张(2),你现在只有1-2(1是sheet1,2是sheet3)。因此,当您递增到3时,不再有索引为3的工作表。

你想要更像这样的东西。

  c= 1
  Dim Wbk As Workbook
  Set Wbk = Workbooks.Add
  Dim i As Integer
  Application.DisplayAlerts = False

  For i = Wbk.Worksheets.count To 1 step -1
      Sheets(i).Delete
  Next iIndex