我的代码设计用于遍历行中的每个单元格,并删除它们除了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
答案 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