Excel精英培训网

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

[已解决]一个代码的问题,请指教

[复制链接]
发表于 2013-9-27 15:56 | 显示全部楼层 |阅读模式
本帖最后由 hackcan 于 2013-9-27 16:54 编辑

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As String
i = Sheet1.[B2].Value
   On Error Resume Next
    Application.EnableEvents = False
    For Each c In Target.Cells
        With c
            If .Column >= 4 And .Column <= 7 And .Row = 2 Then .Value = .Value * i
        End With
    Next
    Application.EnableEvents = True
End Sub


现在可以使指定的区域里输入数值,乘以一个倍数,然后显示;

我想让每一行都乘以一个不同的倍数,我只会本方法,就是多定义变量,然后If .Column >= 4 And .Column <= 7 And .Row = 2 Then .Value = .Value * i 《==把变量换过来换过去,这也太笨了点,我想请问有没有比较简洁的方法,谢谢

具体的请看附件里的图片
最佳答案
2013-9-27 17:13
hackcan 发表于 2013-9-27 16:54
我已经把附件上传了,请查看

那个要乘以的倍数是用户自己填写的,没有规律
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Application.EnableEvents = False
  3.     On Error Resume Next
  4.         For Each c In Target.Cells
  5.             With c
  6.             If .Column >= 4 And .Column <= 7 Then .Value = .Value * Cells(c.Row, 2)
  7.             End With
  8.         Next
  9.     Application.EnableEvents = True
  10. End Sub
复制代码
还是这样可行?

QQ截图20130927155149.png

1.rar

14.58 KB, 下载次数: 6

发表于 2013-9-27 16:02 | 显示全部楼层
回复

使用道具 举报

发表于 2013-9-27 16:05 | 显示全部楼层
本帖最后由 美斯特邦威 于 2013-9-27 16:09 编辑
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Application.EnableEvents = False
  3.     On Error Resume Next
  4.         For Each c In Target.Cells
  5.             With c
  6.             If .Column >= 4 And .Column <= 7 Then .Value = .Value * (c.Row - 0.5)
  7.             End With
  8.         Next
  9.     Application.EnableEvents = True
  10. End Sub
复制代码
这个意思?
回复

使用道具 举报

 楼主| 发表于 2013-9-27 16:09 | 显示全部楼层
美斯特邦威 发表于 2013-9-27 16:05
这个意思?

额,那个1.5、2.5、3.5..只是我举得一个例子,实际应用时并没有规律。。
不过先谢谢大哥的关注,有没有好的解决方法呢?
回复

使用道具 举报

发表于 2013-9-27 16:11 | 显示全部楼层
美斯特邦威 发表于 2013-9-27 16:05
这个意思?

这个表示什么意思: Application.EnableEvents = False

回复

使用道具 举报

 楼主| 发表于 2013-9-27 16:25 | 显示全部楼层
danio112 发表于 2013-9-27 16:11
这个表示什么意思: Application.EnableEvents = False

禁止重复计算的意思吧
回复

使用道具 举报

 楼主| 发表于 2013-9-27 16:31 | 显示全部楼层
我心飞翔410 发表于 2013-9-27 16:02
录制宏 看看 选择性粘贴 方式为乘

选择性粘贴的方法不太适用哟。。
回复

使用道具 举报

发表于 2013-9-27 16:37 | 显示全部楼层
hackcan 发表于 2013-9-27 16:09
额,那个1.5、2.5、3.5..只是我举得一个例子,实际应用时并没有规律。。
不过先谢谢大哥的关注,有没有好 ...

那这些变量是在数据中还是自己在VBA设置??
回复

使用道具 举报

发表于 2013-9-27 16:38 | 显示全部楼层
danio112 发表于 2013-9-27 16:11
这个表示什么意思: Application.EnableEvents = False

屏蔽事件
防止递归

回复

使用道具 举报

发表于 2013-9-27 16:39 | 显示全部楼层
上附件最好
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-4 15:29 , Processed in 1.551025 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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