ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

求大神帮忙,急!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-7-26 16:52 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
求助各位大神,如何编写vba代码能够实现以下功能:
需要制作一个下单表,要求如下当C列任意单元格填入相对应的拉手名称时,然后在E列同一行的单元格内输入一个尺寸后会自动根据给定计算公式自动计算好,并将结果输出在E列当前单元格,替换掉之前输入的原尺寸;

比如:C3单元格输入的为F型拉手,在E3的单元格输入的原尺寸为600*450,需要执行600-20,450-20,最后E3单元格显示的是580*430;

有5种拉手,假设输入尺寸为 a*b 计算公式如下:
A型拉手:(a/2-20)*(b/2-20)
B型拉手:(a*2+20)*(b*2+20)
C型拉手:(a-30)*(b-30)
F型拉手:(a-20)*(b-20)
E型拉手:(a/3-10)*(a/3-10)


表12.rar

10.14 KB, 下载次数: 7

TA的精华主题

TA的得分主题

发表于 2024-7-26 17:03 | 显示全部楼层
  1. Sub À­ÊÖ()
  2.     Application.ScreenUpdating = False
  3.     Application.Calculation = xlCalculationManual
  4.     Dim i As Long
  5.     For i = 3 To 1000
  6.         Select Case Cells(i, 3)
  7.                 Case "AÐÍÀ­ÊÖ"
  8.                     Cells(i, 7) = (Left(Cells(i, 5), 3) / 2 - 20) & "*" & (Right(Cells(i, 5), 3) / 2 - 20)
  9.                 Case "BÐÍÀ­ÊÖ"
  10.                     Cells(i, 7) = (Left(Cells(i, 5), 3) * 2 + 20) & "*" & (Right(Cells(i, 5), 3) * 2 + 20)
  11.                 Case "CÐÍÀ­ÊÖ"
  12.                     Cells(i, 7) = (Left(Cells(i, 5), 3) - 30) & "*" & (Right(Cells(i, 5), 3) - 30)
  13.                 Case "DÐÍÀ­ÊÖ"
  14.                     Cells(i, 7) = (Left(Cells(i, 5), 3) - 20) & "*" & (Right(Cells(i, 5), 3) - 20)
  15.                 Case "EÐÍÀ­ÊÖ"
  16.                     Cells(i, 7) = (Left(Cells(i, 5), 3) / 3 - 10) & "*" & (Right(Cells(i, 5), 3) / 3 - 10)
  17.         End Select
  18.         If Cells(i + 1, 3) = "" Then Exit For
  19.     Next
  20.    
  21.     Application.ScreenUpdating = True
  22.     Application.Calculation = xlCalculationAutomatic
  23. End Sub
复制代码

表12.rar

17.6 KB, 下载次数: 2

TA的精华主题

TA的得分主题

发表于 2024-7-26 17:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 dy83797465268 于 2024-7-26 17:06 编辑

参考附件~~~~~~~~~~
我没有做替换,替换自己只要更换单元格即可,但是这样的弊端就是每执行一次就会执行一次算法

表12.rar

17.6 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2024-7-26 17:04 | 显示全部楼层
除的话,输入分数

表12.rar

17.44 KB, 下载次数: 7

事件代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-26 17:30 | 显示全部楼层

谢谢老师,不过有一个问题,因为输入的尺寸不一定时三位数*三位数,有时候时四位数*四位数,四位数*三位数这样子的,那么公式这样写就会计算错误,或者报错

TA的精华主题

TA的得分主题

发表于 2024-7-26 17:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
789456luo 发表于 2024-7-26 17:30
谢谢老师,不过有一个问题,因为输入的尺寸不一定时三位数*三位数,有时候时四位数*四位数,四位数*三位 ...

当然会, 那就根据实际情况把他判断出来就好了

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-26 17:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ynzsvt 发表于 2024-7-26 17:04
除的话,输入分数

谢谢老师,有些地方我看不懂,需要再向您请教

TA的精华主题

TA的得分主题

发表于 2024-7-26 17:37 | 显示全部楼层
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     Dim t
  3.     Set t = Target
  4.     If t.Rows.Count > 1 Or t.Columns.Count > 1 Then Exit Sub
  5.     If t.Column = 3 Or t.Column = 5 Then
  6.         If Cells(t.Row, 5) <> "" Then s = Split(Cells(t.Row, 5), "*") Else Exit Sub
  7.         If InStr(t.Value, "A") > 0 Then
  8.             Cells(t.Row, 5) = s(0) / 2 - 20 & "*" & s(1) / 2 - 20
  9.         ElseIf InStr(t.Value, "B") > 0 Then
  10.             Cells(t.Row, 5) = s(0) * 2 + 20 & "*" & s(1) * 2 + 20
  11.         ElseIf InStr(t.Value, "C") > 0 Then
  12.             Cells(t.Row, 5) = s(0) - 30 & "*" & s(1) - 30
  13.         ElseIf InStr(t.Value, "F") > 0 Then
  14.             Cells(t.Row, 5) = s(0) - 20 & "*" & s(1) - 20
  15.         ElseIf InStr(t.Value, "E") > 0 Then
  16.             Cells(t.Row, 5) = s(0) / 3 - 10 & "*" & s(1) / 3 - 10
  17.         End If
  18.     Else
  19.         Exit Sub
  20.     End If
  21.     Set t = Nothing
  22. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 06:26 , Processed in 0.044046 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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