找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 381|回复: 4

[原创] cad表格公式批量更新

[复制链接]
发表于 2023-12-20 09:27:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 striver 于 2023-12-20 09:29 编辑

如图为cad钢筋工程量计算表,带背景的cad单元格中含有计算公式,更改其他单元格数值时,公式单元格的显示结果经常不会自动更新,使用该程序可以批量更新cad表格公式单元格的显示结果。

Sub cad表格公式更新xdcad()
  On Error GoTo ErrorHandler
  AppActivate Application.Caption '切换到当前文档
  
  Dim Ent As AcadEntity, Pnt As Variant
  Do
    ThisDrawing.Utility.GetEntity Ent, Pnt, vbCrLf & "选择表格"
    If TypeOf Ent Is AcadTable Then Exit Do
  Loop
  
  Ent.RegenerateTableSuppressed = True
  
  Dim celltextStr As String
  Dim myxsws As Integer
  Dim CellFormatStr As String
  Dim FormulaStr As String
  
  Dim I As Integer
  Dim J As Integer
  Dim RwH() As Double
  ReDim RwH(0 To Ent.Rows - 1)
  For I = 0 To Ent.Rows - 1
    RwH(I) = Ent.GetRowHeight(I)
  Next
  
  For I = 0 To Ent.Rows - 1
    For J = 0 To Ent.Columns - 1
      celltextStr = Trim(Ent.GetText(I, J))
      If Ent.GetHasFormula(I, J, 0) Then
        myxsws = xsws(celltextStr)
        CellFormatStr = "%pr" & myxsws & "%lu2"
        FormulaStr = Ent.GetFormula(I, J, 0)
        
        Ent.SetFormula I, J, 0, ""
        Ent.SetFormula I, J, 0, "=" & Mid(FormulaStr, 2, Len(FormulaStr) - 2)
        Ent.SetCellFormat I, J, CellFormatStr
        Ent.SetCellFormat I, J, CellFormatStr
      End If
    Next
    Ent.SetRowHeight I, RwH(I)
  Next
  Ent.RegenerateTableSuppressed = False
  
  ThisDrawing.Utility.Prompt "已更新表格。" & vbCrLf
  
ErrorHandler:
End Sub

'获取小数位数
Function xsws(numberStr As String) As Integer
    If InStr(numberStr, ".") = 0 Then
        xsws = 0
    ElseIf InStr(numberStr, ".") > 0 Then
        xsws = Len(numberStr) - InStr(numberStr, ".")
    End If
End Function
cadvba231220 表格公式更新.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 225个

财富等级: 日进斗金

发表于 2023-12-24 08:04:56 | 显示全部楼层
谢谢分享!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 225个

财富等级: 日进斗金

发表于 2023-12-24 08:10:32 | 显示全部楼层
谢谢分享!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 225个

财富等级: 日进斗金

发表于 2023-12-24 08:12:38 | 显示全部楼层
谢谢分享!!!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 281个

财富等级: 日进斗金

发表于 2023-12-24 16:08:08 | 显示全部楼层
谢谢分享!
学习一下,看怎么使用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-14 13:45 , Processed in 0.412151 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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