我对VBA和一般编码非常缺乏经验。如果所有三个相邻的单元格变为空白,则将单元格变为空白
我正在制作电子表格,其中列A
是职位号码。
栏B
是日期。
列C
D
和E
你必须在E.G文本没有模式标记。
现在我已经制定了代码把日期B
列,如果任何标记放在C
,D
或E
。但是,如果删除C
,D
或E
,那么列B
中的单元仍填充日期。
只是要清楚C
,D
或E
可以有文字它们或2或1
现在我知道你可以只删除单元格但如果是在乐趣。
这里是我到目前为止的代码,请随时建议的方式来使它更小或清除它,但主要是提前感谢我的问题。
Private Sub Worksheet_Change(ByVal Target As Range)
Call Macro1(Target)
Call Macro2(Target)
Call Macro3(Target)
End Sub
Sub Macro1(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("c2:c100")) Is Nothing Then
With Target(1, 0)
.Value = Date
.EntireColumn.AutoFit
End With
End If
End Sub
Sub Macro2(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("d2:d100")) Is Nothing Then
With Target(1, -1)
.Value = Date
.EntireColumn.AutoFit
End With
End If
End Sub
Sub Macro3(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("e2:e100")) Is Nothing Then
With Target(1, -2)
.Value = Date
.EntireColumn.AutoFit
End With
End If
End Sub
我有点困惑,因为它看起来像你现有的代码将清除或添加一个日期列C,而你的问题是指清除或从列B删除 –
1)OPs代码实际_acts_列“B”自'Range(“C1”)(1,0).Address'返回“$ B $ 1”,'Range(“D1”)(1,-1).Address'和'Range(“E1”)(1 ,-2)。地址'。 2)此外,我认为只有C到E列中的所有单元格都被清除(即使一个一个),也应该允许进行日期清除。 3)最后,我总是切换'应用程序。EnableEvents'设置为False,然后返回True,以避免不必要的(也可能是危险的)循环4)我也考虑明确引用表单,但是在Worksheet_Change()事件处理程序中确保“Active”工作表是'目标'一个 – user3598756
@ user3598756,你当然是在寻址。 2,谁知道,我认为你可能是对的,但目前还不清楚。 3,虽然这是一个很好的做法,但这是没有必要的,因为代码通过改变B. –