ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] “”钢结构表格设计窗体“”-实现输入数据到多工作表中,提前谢谢各位大师

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-7-17 19:15 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
      在此,提前谢谢各位解答的朋友和查看本帖的朋友      现有计算钢结构的几张工作表,现在想设计一个窗体,输入完信息后,根据类别,把数据输入到对应工作表中去。1.附件如下:

设计窗体.rar (151.48 KB, 下载次数: 28)

2.数据结构如下:

数据结构1.png 数据结构2.png


3.实现效果如下:

实现效果.png

再次表示感谢了

TA的精华主题

TA的得分主题

发表于 2016-7-18 09:02 | 显示全部楼层
各种型材和板材的单重、表面积等参数,这些可以从五金手册中查得的数据,不宜在表格中重复计算,既费力又容易出错。即使是从五金手册中不能直接查得的非标的H型钢,也应另外编算这些基本参数,然后在工程量计算表中直接引用,这样表格才能既简洁、又清晰。

看看用我的《工程量计算表》模板做出来的效果吧(表格中的五金数据是随手模拟的)。
我的这个模板,可以通用于土建、水电、装饰、园林等各类工程量计算: 钢结构工程量计算表.rar (124.56 KB, 下载次数: 107)

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-7-18 09:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
有没有人帮忙指点一下啊

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-7-18 14:06 | 显示全部楼层
cbtaja 发表于 2016-7-18 09:02
各种型材和板材的单重、表面积等参数,这些可以从五金手册中查得的数据,不宜在表格中重复计算,既费力又容 ...

谢谢你的答复,我测试了,很强大,向你学习。看了代码,不是现在我能力范围可修改的,注释自动显示下标和计算表达式的值,对我而言很有用,能否单独提出代码,稍微解释一下,谢谢

TA的精华主题

TA的得分主题

发表于 2016-7-18 14:19 | 显示全部楼层
lele400024 发表于 2016-7-18 14:06
谢谢你的答复,我测试了,很强大,向你学习。看了代码,不是现在我能力范围可修改的,注释自动显示下标和 ...

你原来表格中就有计算表达式的值的函数mc,我可以帮你把“注释自动下标”的功能加进去。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-7-18 14:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
cbtaja 发表于 2016-7-18 14:19
你原来表格中就有计算表达式的值的函数mc,我可以帮你把“注释自动下标”的功能加进去。

好的,谢谢,麻烦帮我再添加一下不用输入[]也可以计算,就好了,每次都要输[],很麻烦

TA的精华主题

TA的得分主题

发表于 2016-7-18 14:43 | 显示全部楼层
lele400024 发表于 2016-7-18 14:06
谢谢你的答复,我测试了,很强大,向你学习。看了代码,不是现在我能力范围可修改的,注释自动显示下标和 ...

把你原表格中的模块1中的自定义函数MC代码整个替换成如下,然后在包含有MC函数的单元格中按一下F2然后回车,就自动把所有的注释都下标了:
  1. Function MC(ByVal Rng As Range)
  2. Dim exp$, reg, matches, ma
  3. Set reg = CreateObject("VBSCRIPT.REGEXP")
  4. reg.Global = True
  5. reg.Pattern = "\[.*?\]|{(.*?)}|[^0-9.+-/^*()]"
  6. exp = Rng.Cells(1).Value
  7. Set matches = reg.Execute(exp)
  8. With Rng.Cells(1).Font
  9.     .Superscript = False
  10.     .Subscript = False
  11.     .ColorIndex = 0
  12. End With
  13. For Each ma In matches
  14.     With Rng.Cells(1).Characters(1 + ma.firstindex, ma.Length).Font
  15.         .Subscript = True
  16.         .Color = vbBlue
  17.     End With
  18. Next
  19. MC = Evaluate(reg.Replace(exp, ""))
  20. End Function
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-7-18 14:54 | 显示全部楼层
cbtaja 发表于 2016-7-18 14:43
把你原表格中的模块1中的自定义函数MC代码整个替换成如下,然后在包含有MC函数的单元格中按一下F2然后回 ...

谢谢你的答复,已经可以不用[]可以计算了,但是下标还是不行,只是变成蓝色,但是不是下标,详细请见图
下标.png

TA的精华主题

TA的得分主题

发表于 2016-7-18 16:51 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
在 ThisWorkbook 模块下,粘贴以下代码,可以让你在全新输入或修改一个计算式后,立即使其中的注释内容自动下标:
  1. Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  2.     Dim exp$, i&, matches, ma, i&
  3.     If Sh.Name = "图纸名称" Then Exit Sub
  4.     For i = 1 To 3
  5.         If InStr(Sh.Cells(i, Target.Column), "计算式") Then
  6.             Set reg = CreateObject("vbscript.regexp")
  7.             reg.Global = True
  8.             reg.Pattern = "\[.*?\]|{(.*?)}|[^0-9.+-/^*()]"
  9.             exp = Target.Cells(1).Value
  10.             With Target.Cells(1).Font
  11.                 .Superscript = False
  12.                 .Subscript = False
  13.                 .ColorIndex = 0
  14.             End With
  15.             Set matches = reg.Execute(exp)
  16.             For Each ma In matches
  17.                 With Target.Cells(1).Characters(1 + ma.firstindex, ma.Length).Font
  18.                     .Subscript = True
  19.                     .Color = vbBlue
  20.                 End With
  21.             Next
  22.             Exit For
  23.         End If
  24.     Next
  25. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2016-7-18 16:54 | 显示全部楼层
在 模块1 添加以下宏,运行它可以在整个工作薄中搜索“计算式”所在的列,并把其计算式中的注释内容下标
  1. Sub 注释批量下标()
  2.     Dim exp$, i&, matches, ma, Sh As Worksheet, Target As Range
  3.     Set reg = CreateObject("vbscript.regexp")
  4.     reg.Global = True
  5.     reg.Pattern = "\[.*?\]|{(.*?)}|[^0-9.+-/^*()]"
  6.     For Each Sh In Sheets
  7.         For c = 1 To Sh.UsedRange.Columns.Count
  8.             For i = 1 To 3
  9.                 If InStr(Sh.Cells(i, c), "计算式") Then
  10.                     For j = i + 1 To Sh.UsedRange.Rows.Count
  11.                         exp = Sh.Cells(j, c).Value
  12.                         Set matches = reg.Execute(exp)
  13.                         With Sh.Cells(j, c).Font
  14.                             .Superscript = False
  15.                             .Subscript = False
  16.                             .ColorIndex = 0
  17.                         End With
  18.                         For Each ma In matches
  19.                             With Sh.Cells(j, c).Characters(1 + ma.firstindex, ma.Length).Font
  20.                                 .Subscript = True
  21.                                 .Color = vbBlue
  22.                             End With
  23.                         Next
  24.                     Next
  25.                     Exit For
  26.                 End If
  27.             Next
  28.         Next
  29.     Next
  30. End Sub
复制代码

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-20 21:25 , Processed in 0.043897 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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