ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: tanghanping2011

[求助] 请老师帮写份VBA代码,

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-9-13 17:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Not Intersect(Target, Me.Range("Y11:BC11")) Is Nothing Then
  3.     Application.ScreenUpdating = False
  4.         Dim ss
  5.         Application.EnableEvents = False
  6.         Dim arr, ii, d2 As Object, d3
  7.         Set d2 = CreateObject("scripting.dictionary")
  8.         arr = Sheet7.UsedRange.Value
  9.         For ii = 2 To UBound(arr)
  10.             ss = arr(ii, 1)
  11.             If Len(ss) > 1 Then
  12.                 If Not d2.exists(ss) Then
  13.                     d2(ss) = Array(arr(ii, 20), arr(ii, 21), arr(ii, 22), arr(ii, 23), arr(ii, 24), arr(ii, 25), arr(ii, 26))
  14.                 End If
  15.             End If
  16.         Next
  17.         Set d3 = CreateObject("scripting.dictionary")
  18.         br = [{"Y10","AD10","AI10","AN10","AS10","AX10","BC10"}]
  19.         For x = 1 To UBound(br)
  20.             d3(Left(br(x), 2)) = x - 1
  21.         Next
  22.         Dim ar, i, dic, s
  23.         
  24.         Set dic = CreateObject("scripting.dictionary")
  25.         ar = [{"困气1","*0.8";"困气2","*0.6";"困气3","*0.4";"困气4","*0.2";"困气5","*0.1";"冲气1","/0.8";"冲气2","/0.6";"冲气3","/0.4";"冲气4","/0.2";"冲气5","/0.1"}]
  26.         For i = 1 To UBound(ar)
  27.             dic(ar(i, 1)) = ar(i, 2)
  28.         Next
  29.         tt = Sheet1.[BQ7].Value
  30.         k = d2(tt)
  31.              If Target.Value = "" Then
  32.                       dz = Target.Address(0, 0)
  33.                  If dz = "Y11" Then
  34.                       Range("y10").Value = k(0)
  35.                  ElseIf dz = "AD11" Then
  36.                       Range("AD10").Value = k(1)
  37.                  ElseIf dz = "AI11" Then
  38.                       Range("AI10").Value = k(2)
  39.                  ElseIf dz = "AN11" Then
  40.                       Range("AN10").Value = k(3)
  41.                  ElseIf dz = "AS11" Then
  42.                       Range("AS10").Value = k(4)
  43.                  ElseIf dz = "AX11" Then
  44.                       Range("AX10").Value = k(5)
  45.                  ElseIf dz = "BC11" Then
  46.                       Range("BC10").Value = k(6)
  47.             End If
  48.         Else
  49.             s = Target.Value
  50.             t = dic(s) '找出ar数组的系数
  51.             yy = Left(Target.Address(0, 0), 2)
  52.             col = d3(yy)
  53.             Target.Offset(-1).Value = Evaluate(k(col) & t)
  54.         End If
  55.     Application.EnableEvents = True
  56.     Application.ScreenUpdating = True
  57. End If
  58. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2024-9-13 17:09 | 显示全部楼层
tanghanping2011 发表于 2024-9-13 15:30
抱歉老师,我没有描述清楚,给您添麻烦了。
附件试了,不会计算。

我现在理解到的是分别控制,对应关系

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-9-13 17:14 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-9-13 17:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
试试。。。。。。。

成形工艺表格.rar

237.77 KB, 下载次数: 3

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-13 21:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Qs18 发表于 2024-9-13 17:15
试试。。。。。。。



感谢老师,计算功能都正确了
但是在Y11,AD11,AI11,AN11,AS11,AX11,BC11都是空白时,我切换材料时,对应的Y10,AD10,AI10,AN10,AS10,AX10,BC10的引用数字
不会自动跟着变动,需要我把每一个空格重新按一次才变化,请您再帮我看下。给老师添麻烦了
谢谢老师!!!

666.gif

TA的精华主题

TA的得分主题

发表于 2024-9-13 21:26 | 显示全部楼层
tanghanping2011 发表于 2024-9-13 21:12
感谢老师,计算功能都正确了
但是在Y11,AD11,AI11,AN11,AS11,AX11,BC11都是空白 ...

你这个适合用按钮,用事件不是很合适

TA的精华主题

TA的得分主题

发表于 2024-9-14 08:27 | 显示全部楼层
  1. Sub qs()
  2. Application.ScreenUpdating = False
  3. Dim ss, s, arr, ii, d2 As Object, tt, jj, k
  4. Dim ar, i, dic
  5. Set d2 = CreateObject("scripting.dictionary")
  6. arr = Sheet7.UsedRange.Value
  7. For ii = 2 To UBound(arr)
  8.     ss = arr(ii, 1)
  9.     If Len(ss) > 1 Then
  10.         If Not d2.exists(ss) Then
  11.                 For jj = 20 To 26
  12.                     If arr(ii, jj) = Empty Then
  13.                         arr(ii, jj) = 0
  14.                     End If
  15.                 Next
  16.             d2(ss) = Array(arr(ii, 20), arr(ii, 21), arr(ii, 22), arr(ii, 23), arr(ii, 24), arr(ii, 25), arr(ii, 26))
  17.         End If
  18.     End If
  19. Next
  20. br = [{"Y11","AD11","AI11","AN11","AS11","AX11","BC11"}]
  21. Set dic = CreateObject("scripting.dictionary")
  22. ar = [{"","*1";"困气1","*0.8";"困气2","*0.6";"困气3","*0.4";"困气4","*0.2";"困气5","*0.1";"冲气1","/0.8";"冲气2","/0.6";"冲气3","/0.4";"冲气4","/0.2";"冲气5","/0.1"}]
  23. For i = 1 To UBound(ar)
  24.     dic(ar(i, 1)) = ar(i, 2)
  25. Next
  26. tt = Sheet1.[BQ7].Value
  27. k = d2(tt)
  28. For i = 1 To UBound(br)
  29. s = Sheet1.Range(br(i)).Value
  30. t = dic(s) '找出ar数组的系数
  31. Sheet1.Range(br(i)).Offset(-1).Value = Evaluate(k(i - 1) & t)
  32. Next
  33. Set dic = Nothing: Set d2 = Nothing
  34. Application.ScreenUpdating = True
  35. End Sub
  36. Private Sub Worksheet_Change(ByVal Target As Range)
  37. If Not Intersect(Target, Me.Range("Y11:BC11,DZ9")) Is Nothing Then
  38.     On Error Resume Next
  39.     Application.EnableEvents = False
  40.         Call qs
  41.     Application.EnableEvents = True
  42. End If
  43. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2024-9-14 08:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
试试。。。。。。。。。。
PixPin_2024-09-14_08-38-20.gif

TA的精华主题

TA的得分主题

发表于 2024-9-14 08:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
试试。。。。。。。。。

成形工艺表格.rar

235.68 KB, 下载次数: 6

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-14 09:30 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 23:25 , Processed in 0.035496 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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