我有一个工作表,其值取决于单元格 A。如果 A 列中的行包含一个值,则 B 列到 H 列的单元格将相应更改。
如果 A 列的单元格为空,我想重置 D 列到 F 列的单元格。
我写下了以下VBA代码
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n As Integer
For n = 5 To 75
Application.EnableEvents = False
If VarType(Cells(n, 1)) = vbEmpty Then
Cells(n, 4).ClearContents
Cells(n, 5).ClearContents
Cells(n, 6).ClearContents
Application.EnableEvents = True
End If
Next n
End Sub
“FOR”循环很烦人,并且使 Excel 在输入任何单元格后暂停 1 秒或更长时间,任何人都可以帮助我更正上面的代码,以在没有“FOR”循环的情况下执行我需要执行的操作.
最佳答案
您正在使用 Worksheet_Change 事件,并且每次发生更改时都会迭代 70 行。对于此类问题,这是一个不好的方法,这就是出现延迟的原因。
相反,尝试
Private Sub Worksheet_Change(ByVal Target As Range)
Dim n As Long
If Target.Column = 1 Then
If IsEmpty(Cells(Target.Row, 1)) Then
Range("B" & Target.Row & ":F" & Target.Row).ClearContents
End If
End If
End Sub
只有当您从 A 列中删除值时,这才会清除单元格 => 当 A 列中的单元格为空时
关于excel - 如果单元格 A 为空,则清除 B 至 F 列的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23890943/