VBA – 如果在列A中input值,则更新列D中的单元格。如果该值从列A中删除,则还要从列D中删除

我正在努力在销售点的excel中制作销售表。 我需要:

  1. 当一个条形码进入单元格A5之后,我想单元格D5向前更新,默认数量为1,

  2. 如果条码被删除,数量也应该被清除。

我能够达到#1而不是#2。 到目前为止我有下面的代码,任何人都可以帮忙吗?

Sub SetQuantity() Dim LastRow As Long Dim i As Long LastRow = Range("A" & Rows.Count).End(xlUp).Row For i = 5 To LastRow If Not IsEmpty(Range("A" & i).Value) Then Range("D" & i).Value = 1 Else: DeleteQuantity End If Next i End Sub Sub DeleteQuantity() Dim LastRow As Long Dim i As Long LastRow = Range("A" & Rows.Count).End(xlUp).Row For i = 5 To LastRow If Range("A" & i).Value = "" Then Range("D" & i).Value = "" End If Next i End Sub 

像这样的事情会避免所有的循环,并可能更好地工作 –

 Sub worksheet_change(ByVal Target As Range) Dim lastrow As Integer lastrow = Range("A" & Rows.Count).End(xlUp).Row If Not Intersect(Target, Range("A5:A" & lastrow)) Is Nothing Then If IsEmpty(Target) Then Target.Offset(, 3) = vbNullString Else: Target.Offset(, 3) = 1 End If End If End Sub 

您只需将其放置在要观看的工作表的工作表模块中即可。

把这个代码放在表单模块中:

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And Target.Rows.Count = 1 And Target.Columns.Count = 1 Then If Not IsEmpty(Target.Value) Then Cells(Target.Row, 4) = 1 Else Cells(Target.Row, 4).ClearContents End If End If End Sub