我正在excel中更新一个销售工具。它目前有一个小宏,当用户通过添加时间戳输入或选择新状态时,它将自动更新。
我想在同一工作表上添加另一个宏,但在不同的单元格范围内。当用户更新到SOLD以具有新的时间戳时,这将在进行销售时更新。我尝试创建一个新的变量,并用新的范围和新的变量重复If/then语句,但没有成功。
第一个If/Then在不发出myTimeRange
的情况下工作,但第二个If/ThenmySoldRange
则不工作。这是代码剪切
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myTableRange As Range
Dim myDateTimeRange As Range
Dim myUpdatedRange As Range
Dim mySoldRange As Range
Dim mySoldTimeRange As Range
Dim mySoldUpdatedRange As Range
Set myTableRange = Range("A2:E300")
Set mySoldRange = Range("H2:K300")
If Intersect(Target, myTableRange) Is Nothing Then Exit Sub
Set myDateTimeRange = Range("F" & Target.Row)
Set myUpdatedRange = Range("G" & Target.Row)
If myDateTimeRange.Value = "" Then
myDateTimeRange.Value = Now
End If
If Intersect(Target, mySoldRange) Is Nothing Then Exit Sub
Set mySoldTimeRange = Range("H" & Target.Row)
Set mySoldUpdatedRange = Range("K" & Target.Row)
If mySoldTimeRange.Value = "" Then
mySoldTimeRange.Value = Now
End If
myUpdatedRange.Value = Now
mySoldUpdatedTimeRange.Value = Now
End Sub
If Intersect(Target, myTableRange) Is Nothing Then Exit Sub
如果要测试Target
是否与另一个范围相交,则不能在此处使用Exit Sub
。
改为:
If Not Intersect(Target, myTableRange) Is Nothing Then
Set myDateTimeRange = Range("F" & Target.Row)
Set myUpdatedRange = Range("G" & Target.Row)
If myDateTimeRange.Value = "" Then
myDateTimeRange.Value = Now
End If
End If
类似地(虽然在技术上没有必要,但要保持一致(:
If Not Intersect(Target, mySoldRange) Is Nothing Then
...
End If