下标超出范围,删除行" 0"在所有单元格中

时间:2018-05-21 14:25:07

标签: excel vba excel-vba

我的代码现在无法使用。我使用两个工作簿,在第一个工作簿中,我想创建一个概述列表,其中填充了第二个工作簿中的数据。

在复制粘贴过程之后,许多单元格为空或填充了" 0"。我想删除所有只用零或空填充的行。但是因为我仍然是一个begaenger并且如果两个条件都为真,就不能编写删除行的代码,我用#34; 0"填充空单元格。现在我试图删除所有专门用" 0"填充的行。

但是使用以下代码我得到了

  

"运行时错误9:下标超出范围"

以下区域也标记为黄色:If sn(j, 4) & sn(j, 5) & sn(j, 6) & sn(j, 7) & sn(j, 8) & sn(j, 9) = "000000" Then

wb1.Activate
ws1.Select

LR = Cells(Rows.Count, 3).End(xlUp).Row 'letzte Zeile der Spalte
Set Myrange = Range("D2:AO" & LR).SpecialCells(xlCellTypeBlanks) 'nur Leerzellen
Myrange.Formula = "0"

        sn = Sheets(3).UsedRange

        For j = 1 To UBound(sn)
            If sn(j, 4) & sn(j, 5) & sn(j, 6) & sn(j, 7) & sn(j, 8) & sn(j, 9) = "000000" Then c00 = c00 & "|" & j
        Next

        If c00 <> "" Then
            sn = Application.Index(sn, Application.Transpose(Split(Mid(c00, 2), "|")), [transpose(row(1:8))])
            Sheets(3).UsedRange.ClearContents
            Sheets(3).Cells(1).Resize(UBound(sn), UBound(sn, 2)) = sn
        End If

Sheets(3)也是ws1,在将Sheets(3)更改为ws1后,我得到了#34;类型不匹配&#34;错误和行sn = Application.Index(sn, Application.Transpose(Split(Mid(c00, 2), "|")), [transpose(row(1:8))])标记为黄色。我还会给当地人的窗户画一张照片。 enter image description here

主要任务应该是删除空单元格或单元格的行,就像在下一张图片上看到的那样(蓝色标记的行)。我的第一个编写的代码如下,但它的速度慢,因为它需要5分钟,有时一些行不会被删除。

enter image description here

祝你好运, Bamane

1 个答案:

答案 0 :(得分:0)

就像dwirony说的那样,你需要重新思考如何实现这一目标。由于我不知道你在每一栏中有什么类型的数据,这是我能为你提供的最好的例子。您不需要在空单元格中插入&#34; 0&#34; s。最好的办法是使用辅助列(AP,如果它是空的)来汇总从D2到AO2的每一行中的数据。为&#34; 0&#34;添加过滤器在列AP中,然后删除所有可见单元格。您可能需要修改以下代码,以满足您的问题中未确定的任何要求。

Dim LR As Long

With ThisWorkbook.Sheets(3)
LR = Cells(Rows.Count, 3).End(xlUp).Row
    .Range("AP2:AP" & LR).Formula = "=SUM(D2:AO2)"
    .UsedRange.AutoFilter Field:=42, Criteria1:="0"
    .Range("A2:A" & LR).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    .AutoFilterMode = False
End With