Excel精英培训网

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

[已解决]请问老师,如何用宏模块做这张明细表?

[复制链接]
发表于 2014-6-27 18:06 | 显示全部楼层 |阅读模式
我的表有公式,但我想用VBA宏模块表示,不知老师可以帮我做到吗?谢谢!
最佳答案
2014-7-1 14:55
我这边打开是好的,原来的模块不需要了,你直接把下述代码放到“PF-11303”工作表模块里面就行了。
是工作表事件,你试一下效果
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Column <> 5 Then Exit Sub
  3. If Target.Row < 6 Then Exit Sub
  4. If Target.Count > 1 Then Exit Sub
  5. If Target = "" Then Union(Target.Offset(, 1), Target.Offset(, 4).Resize(, 8)).ClearContents: Exit Sub
  6. Dim arr, brr, r&
  7. arr = Sheets(1).Range("b6:h" & Sheets(1).[b65536].End(3).Row)
  8. brr = Target.Resize(, 15)
  9. r = Target
  10. brr(1, 2) = arr(r, 1)
  11. brr(1, 8) = arr(r, 2) * IIf(brr(1, 5) = "L", 1, brr(1, 5)) * brr(1, 7) * 7.85 / 1000000
  12. brr(1, 9) = brr(1, 4) * brr(1, 8)
  13. brr(1, 10) = brr(1, 9) * arr(r, 4)
  14. brr(1, 11) = arr(r, 3) * IIf(brr(1, 5) = "L", 1, brr(1, 5)) * brr(1, 7) / 1000000
  15. brr(1, 12) = brr(1, 4) * brr(1, 11)
  16. brr(1, 13) = brr(1, 12) * 13
  17. brr(1, 15) = arr(r, 4) * IIf(brr(1, 9) = 0, brr(1, 4), brr(1, 9)) + brr(1, 12) * 13
  18. Target.Resize(, 15) = brr
  19. End Sub
复制代码

定额明细表.rar

19.64 KB, 下载次数: 18

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-6-27 23:01 | 显示全部楼层
附件请测试,几个单独的简单的公式没有变动。
  1. Private Sub CommandButton1_Click()
  2. Dim arr, brr, i&, r&
  3. arr = Sheets(1).Range("b6:h" & Sheets(1).[b65536].End(3).Row)
  4. brr = Range("e6:s" & [c65536].End(3).Row)
  5. For i = 1 To UBound(brr)
  6.   If brr(i, 1) <> "" Then
  7.     r = brr(i, 1)
  8.     brr(i, 2) = arr(r, 1)
  9.     brr(i, 8) = arr(r, 2) * IIf(brr(i, 5) = "L", 1, brr(i, 5)) * brr(i, 7) * 7.85 / 1000000
  10.     brr(i, 9) = brr(i, 4) * brr(i, 8)
  11.     brr(i, 10) = brr(i, 9) * arr(r, 4)
  12.     brr(i, 11) = arr(r, 3) * IIf(brr(i, 5) = "L", 1, brr(i, 5)) * brr(i, 7) / 1000000
  13.     brr(i, 12) = brr(i, 4) * brr(i, 11)
  14.     brr(i, 13) = brr(i, 12) * 13
  15.     brr(i, 15) = arr(r, 4) * IIf(brr(i, 9) = 0, brr(i, 4), brr(i, 9)) + brr(i, 12) * 13
  16.   End If
  17. Next i
  18. [e6].Resize(UBound(brr), UBound(brr, 2)) = brr
  19. End Sub
复制代码

定额明细表.rar

20.82 KB, 下载次数: 23

回复

使用道具 举报

 楼主| 发表于 2014-6-28 17:41 | 显示全部楼层
大灰狼1976 发表于 2014-6-27 23:01
附件请测试,几个单独的简单的公式没有变动。

老师你好!可否不用按钮,直接在E列中输入代码和我的公式一样,或直接在F列中输入代码返回值就是规格?谢谢
回复

使用道具 举报

发表于 2014-6-30 14:05 | 显示全部楼层
附件请测试

定额明细表.zip

19.49 KB, 下载次数: 24

回复

使用道具 举报

 楼主| 发表于 2014-6-30 17:38 | 显示全部楼层
大灰狼1976 发表于 2014-6-30 14:05
附件请测试

老师你好!这个模块没了{:041:}
回复

使用道具 举报

发表于 2014-6-30 23:31 | 显示全部楼层
是不是想做成自定义函数?
回复

使用道具 举报

发表于 2014-7-1 14:55 | 显示全部楼层    本楼为最佳答案   
我这边打开是好的,原来的模块不需要了,你直接把下述代码放到“PF-11303”工作表模块里面就行了。
是工作表事件,你试一下效果
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Column <> 5 Then Exit Sub
  3. If Target.Row < 6 Then Exit Sub
  4. If Target.Count > 1 Then Exit Sub
  5. If Target = "" Then Union(Target.Offset(, 1), Target.Offset(, 4).Resize(, 8)).ClearContents: Exit Sub
  6. Dim arr, brr, r&
  7. arr = Sheets(1).Range("b6:h" & Sheets(1).[b65536].End(3).Row)
  8. brr = Target.Resize(, 15)
  9. r = Target
  10. brr(1, 2) = arr(r, 1)
  11. brr(1, 8) = arr(r, 2) * IIf(brr(1, 5) = "L", 1, brr(1, 5)) * brr(1, 7) * 7.85 / 1000000
  12. brr(1, 9) = brr(1, 4) * brr(1, 8)
  13. brr(1, 10) = brr(1, 9) * arr(r, 4)
  14. brr(1, 11) = arr(r, 3) * IIf(brr(1, 5) = "L", 1, brr(1, 5)) * brr(1, 7) / 1000000
  15. brr(1, 12) = brr(1, 4) * brr(1, 11)
  16. brr(1, 13) = brr(1, 12) * 13
  17. brr(1, 15) = arr(r, 4) * IIf(brr(1, 9) = 0, brr(1, 4), brr(1, 9)) + brr(1, 12) * 13
  18. Target.Resize(, 15) = brr
  19. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-7-1 19:17 | 显示全部楼层
大灰狼1976 发表于 2014-7-1 14:55
我这边打开是好的,原来的模块不需要了,你直接把下述代码放到“PF-11303”工作表模块里面就行了。
是工作 ...

谢谢老师!我要认真学习
回复

使用道具 举报

 楼主| 发表于 2014-7-3 17:54 | 显示全部楼层
liangyi1190 发表于 2014-7-1 19:17
谢谢老师!我要认真学习

请问老师,我的EXCEL2007为什么不能操作表格了?
回复

使用道具 举报

 楼主| 发表于 2014-7-7 17:32 | 显示全部楼层
大灰狼1976 发表于 2014-7-1 14:55
我这边打开是好的,原来的模块不需要了,你直接把下述代码放到“PF-11303”工作表模块里面就行了。
是工作 ...

老师你好!请问此表为什么在EXCEL2007内不能运行呢?
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 14:40 , Processed in 2.146489 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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