用For循环清除行的内容

时间:2015-08-06 23:45:43

标签: excel vba excel-vba for-loop

我的代码设计用于遍历行中的每个单元格,并删除它们除了A和O列之外。当我运行此代码时,它只删除第二列。

我知道"行(Target.Row).ClearContents"但这不符合我的目的,因为我需要特定的列来保持原样。

Dim i As Integer

For i = 2 To i = 30
    If i = 15 Then
        'update i but do nothing
        i = i + 1
    Else
        'update i and clear contents of cell
        .Cells(Target.Row, i).Clear
        i = i + 1
    End If
Next                   

2 个答案:

答案 0 :(得分:2)

For循环会增加i,所以你不应该这样,而且这种语法不正确For i = 2 To i = 30

Dim i As Long

For i = 2 To 30
    If i <> 15 Then .Cells(Target.Row, i).Clear
Next

从行中排除某些列的更快方法(不使用循环):

With Target.Parent
    .Columns(15).Hidden = True
    .UsedRange.Rows(Target.Row).SpecialCells(xlCellTypeVisible).Clear
    .Columns(15).Hidden = False
End With

答案 1 :(得分:1)

为什么要使用循环?

Union(Range(.Cells(Target.Row,2),.Cells(Target.Row,14)), Range(.Cells(Target.Row,16),.Cells(Target.Row,30))).Clear