清除宏以清除特定列中空白单元格上的特定单元格范围

时间:2016-10-28 17:36:21

标签: excel-vba vba excel

我昨天要求similar question填充特定列列表中的一系列单元格。我的代码的这方面工作得很好,但现在我正在尝试创建一个清除宏来删除插入的行。

所有新插入的行在N列中都有空白单元格,所以我只是试图搜索N列中的所有单元格,找到空白,然后删除N和Y列之间的行。这就是我所拥有的我跑的时候却没有做任何事情?

非常感谢任何帮助!

Sub Clear_PCOTCS()
    Dim myLastRow As Long
    Dim myRow As Long

    Application.ScreenUpdating = False
    myLastRow = Cells(Rows.Count, "N").End(xlUp).Row
    For myRow = myLastRow To 1 Step -1
        If Len(Cells(myRow, "N")) = 1 And Cells(myRow, "N") = "" Then
            Range(Cells(myRow + 1, "N"), Cells(myRow + 1, "Y")).Delete  Shift:=xlDown 'CopyOrigin:=xlFormatFromLeftOrAbove
        End If
    Next myRow
    Application.ScreenUpdating = True
End Sub

1 个答案:

答案 0 :(得分:1)

您的错误来自于将错误的枚举传递给if (ValueGenerated.Target is System.windows.form.control) { Control targetForm = ValueGenerated.Target as control; targetForm.Invoke(ValueChanged,new object[]{this,args}); } 。它需要一个XlDeleteShiftDirection值,并且您传递XlDirection。请注意,虽然Range.DeletexlShiftUp共享相同的值,但xlUp(-4121)不是有效的xlDown

如果你需要做的就是当“N”列中的单元格为空时删除每一行(“N”和“Y”列之间),你就会过度思考它。首先,根据您要创建的XlDeleteShiftDirection的形状,移位应默认为xlShiftUp,因此您可以省略参数。其次,您需要删除您在此处应用的偏移量:

Range

删除您正在测试的行,而不是下面的行。你应该寻找更像这样的东西:

Range(Cells(myRow + 1, "N"), Cells(myRow + 1, "Y")).Delete