我想根据建议折扣%计算价格或根据建议价格计算折扣。
我需要用户能够使用任一参数并来回调整以确定其理想价格。
我已经对公式进行了编码,以便用户不会覆盖任何内容,但是因为“IF”公式中的“value if false”元素依赖于一列中的零值而导致问题,因此如果用户没有,则重置在将图形输入另一个图形之前,请手动调整此值。这导致重置新数字。
理想情况下,如果在“每单位促销价”中输入值,我希望工作表将“Proposed Promo POR%”列中的值重置为零。这可能吗?
这是我目前的代码。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("b21:b26")) Is Nothing Then Exit Sub
Application.EnableEvents = False
ActiveSheet.Range("$i21:$i26").Formula ="=IF(Proposal!$b21>Formulae!$a$5,Proposal!$g21-(Proposal!$g21*Proposal!$b21), (Proposal!$g21-Proposal!$i21)/Proposal!$g21)"
Application.EnableEvents = True
End Sub
为了清晰公式!$ a $ 5为零,如果他们愿意,用户将输入价格为$ i21:$ i26。如果他们确实输入了一些内容,那么b列应该重置为零。
这是我的表格中的列和标题的屏幕截图
答案 0 :(得分:1)
Worksheet_Change
事件会对您有所帮助。每次用户更改活动单元格时都会触发Worksheet_SelectionChange
,而Worksheet_Change
会在用户对任何单元格进行编辑时触发。< / p>
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("$i21:$i26"")) Is Nothing _
And Target.Rows.Count = 1 and Target.Columns.Count = 1 Then
'assumes event will fire only on changing one cell at a time
Application.EnableEvents = False
Target.Offset(0,-7).Value = 0
Application.EnableEvents = True
End If
End Sub