如何避免excel插入列后修改VBA代码

像下面这样的代码,如果插入列或删除列就要跟着修改代码,很麻烦,如何避免呢?
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 4 Then
If Target.Offset(0, -3) = "" then
Target.Offset(0, -3) = Date
end if
end if
End Sub

可以将4替换为:UsedRange.Find("第4列的标题", lookat:=xlWhole).Column

追问

怎么样算列标题呢?主要就想填写 产品卷号 时能自动填写 生产日期 。

追答

产品卷号是在Y列,column也不应该是等4呀

你的意思是不是如果产品卷号有添加,则将生产日期列也添加当时的时间?如果是你试一下如下代码:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = UsedRange.Find("产品卷号", lookat:=xlWhole).Column Then

If Target(1, -2) = "" Then

Target(1, -2) = Date

End If

End If

End Sub

追问

如果生产日期和产品卷号之间可能会插入或删除列呢?生产日期列要怎么表示呢

追答

如果生产日期和产品卷号之间可能会插入或删除列的话就使用如下代码:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = UsedRange.Find("产品卷号", lookat:=xlWhole).Column Then

If Cells(Target.Row, UsedRange.Find("生产日期", lookat:=xlWhole).Column) = "" Then

Cells(Target.Row, UsedRange.Find("生产日期", lookat:=xlWhole).Column) = Date

End If

End If

End Sub

追问

对的,就是这个效果,谢谢!!

追答

请采纳,谢谢。

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-07-08
表格数据截图呢追问

主要就想填写 产品卷号 时能自动填写 生产日期 。

相似回答