如何用VBA因商品的购买数量和折扣比率计算其批发单价

实例图如下:

 

 

 

 

代码如下:

Sub july232()

For Each y In Worksheets

x = y.UsedRange.Rows.Count

For i = 2 To x

x = y.Cells(i, "B")

a = y.Cells(i, "A")

c = y.Cells(i, "C")

If x <= 3 Then

c = a - a * 0.01

ElseIf x <= 5 Then

c = a - a * 0.02

Else

c = a - a * 0.05

End If

Next

Next

End Sub

遇到一个问题是这样的:有个做采购的同事,他来找到我,让我给他设计一个execl表格,能完成它日常采购东西的流水账,要求是能够自动输入当天日期和时间。 然后我开始分析这个问题,用=now()这个函数能够做到自动获得当前日期和时间,但是问题在于怎么触发它,于是我有想到if语句。然后我制作一张简单的样表,A2设置为输入序号,B2里放日期和时间,当A2输入内容后,B2自动输入当前日期和时间。那么B2列里设置函数=IF(A2="","",NOW()) 开始以为就这么简单,但是发现这个表格如果重新打开后,所以B列都会变为最新的日期,而且当A2被重新编辑后,B2就会变更日期为最新日期,这样完全实现不了采购同事的需求。于是我查阅了资料,找到了Target更新事件和Offset获得焦点,让他们配合起来达到目的,经过不懈的努力,终于让我把代码写成功了,初步达到了采购同事的要求。特此把代码写在下面。供大家参考(以下代码最好配合实际案例的execl表的环境进行阅读,这样事半功倍,execl表,我把它挂载到一个下载链接吧): Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 1 And Target.Column <> 5 Or Target.Count > 1 Then Exit Sub On Error Resume Next With Target If .Column = 1 And .Offset(0, 1).Value = "" Then '判断该单元格是否已经写入时间 .Offset(0, 1) = Now() End If If .Column = 5 Then '计算合计价格 .Offset(0, 1) = .Offset(0, 0) * .Offset(0, -1) End If End With End Sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值