Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2740|回复: 2

[已解决]Target.Address问题

[复制链接]
发表于 2013-8-22 23:02 | 显示全部楼层 |阅读模式
触发事件中的Target.Address问题。
最佳答案
2013-8-22 23:56
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim lMoney As Long
  3.     If Target.Count > 1 Then Exit Sub
  4.     If Target.Column <> 2 Then Exit Sub
  5.     If Len(Target.Value) = 0 Then Exit Sub
  6.     If Not VBA.IsNumeric(Target.Value) Then Exit Sub
  7.    
  8.     lMoney = Target.Value
  9.     Application.EnableEvents = False
  10.     Application.ScreenUpdating = False
  11.     lMoney = lMoney
  12.     Target.Offset(0, 1) = Int((lMoney / 100))    '计算100元
  13.     Target.Offset(0, 2) = Int((lMoney - Target.Offset(0, 1) * 100) / 50)    '计算50元
  14.     Target.Offset(0, 3) = Int((lMoney - Target.Offset(0, 1) * 100 - Target.Offset(0, 2) * 50) / 20)    '计算20元
  15.     Target.Offset(0, 4) = Int((lMoney - Target.Offset(0, 1) * 100 - Target.Offset(0, 2) * 50 - Target.Offset(0, 3) * 20) / 10)    '计算10元
  16.     Target.Offset(0, 5) = Int((lMoney - Target.Offset(0, 1) * 100 - Target.Offset(0, 2) * 50 - Target.Offset(0, 3) * 20 - Target.Offset(0, 4) * 10) / 5)    '计算5元
  17.     Target.Offset(0, 6) = Int((lMoney - Target.Offset(0, 1) * 100 - Target.Offset(0, 2) * 50 - Target.Offset(0, 3) * 20 - Target.Offset(0, 4) * 10 - Target.Offset(0, 5) * 5) / 2)    '计算2元
  18.     Target.Offset(0, 7) = Int((lMoney - Target.Offset(0, 1) * 100 - Target.Offset(0, 2) * 50 - Target.Offset(0, 3) * 20 - Target.Offset(0, 4) * 10 - Target.Offset(0, 5) * 5 - Target.Offset(0, 6) * 2))    '计算1元
  19.     Application.ScreenUpdating = True
  20.     Application.EnableEvents = True
  21. End Sub
复制代码

换钱.rar

9.52 KB, 下载次数: 9

发表于 2013-8-22 23:56 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim lMoney As Long
  3.     If Target.Count > 1 Then Exit Sub
  4.     If Target.Column <> 2 Then Exit Sub
  5.     If Len(Target.Value) = 0 Then Exit Sub
  6.     If Not VBA.IsNumeric(Target.Value) Then Exit Sub
  7.    
  8.     lMoney = Target.Value
  9.     Application.EnableEvents = False
  10.     Application.ScreenUpdating = False
  11.     lMoney = lMoney
  12.     Target.Offset(0, 1) = Int((lMoney / 100))    '计算100元
  13.     Target.Offset(0, 2) = Int((lMoney - Target.Offset(0, 1) * 100) / 50)    '计算50元
  14.     Target.Offset(0, 3) = Int((lMoney - Target.Offset(0, 1) * 100 - Target.Offset(0, 2) * 50) / 20)    '计算20元
  15.     Target.Offset(0, 4) = Int((lMoney - Target.Offset(0, 1) * 100 - Target.Offset(0, 2) * 50 - Target.Offset(0, 3) * 20) / 10)    '计算10元
  16.     Target.Offset(0, 5) = Int((lMoney - Target.Offset(0, 1) * 100 - Target.Offset(0, 2) * 50 - Target.Offset(0, 3) * 20 - Target.Offset(0, 4) * 10) / 5)    '计算5元
  17.     Target.Offset(0, 6) = Int((lMoney - Target.Offset(0, 1) * 100 - Target.Offset(0, 2) * 50 - Target.Offset(0, 3) * 20 - Target.Offset(0, 4) * 10 - Target.Offset(0, 5) * 5) / 2)    '计算2元
  18.     Target.Offset(0, 7) = Int((lMoney - Target.Offset(0, 1) * 100 - Target.Offset(0, 2) * 50 - Target.Offset(0, 3) * 20 - Target.Offset(0, 4) * 10 - Target.Offset(0, 5) * 5 - Target.Offset(0, 6) * 2))    '计算1元
  19.     Application.ScreenUpdating = True
  20.     Application.EnableEvents = True
  21. End Sub
复制代码

点评

花亲这么晚了 还工作啊 呵呵  发表于 2013-8-23 08:19
回复

使用道具 举报

发表于 2013-8-22 23:57 | 显示全部楼层
用SELECTCHANGE不太好。应该用CHANGE事件。
另外多用变量参与计算,不要用单元格里的值进行运算。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 06:07 , Processed in 0.291352 second(s), 20 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表