ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

如何突破EVALUATE中255字符的限制

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-8-15 19:48 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:脚本语言应用
请高手帮忙解决,做工程量的时候需要的计算公式大都很长,且为了方便核对需要在公式中插入[文本] 注释,如何突破EVALUATE中带文本注释的255字符的限制,

点评

知识树索引内容:位于8楼  发表于 2014-2-15 11:51

TA的精华主题

TA的得分主题

发表于 2013-8-15 20:07 | 显示全部楼层
新建一个工作表,把公式放到里面去,再写注解,想写多少都行吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-15 20:31 | 显示全部楼层
当然这样做也可以,但在实际中是没有这样做的,而且同类构件即便是不含文本注释,有时也要突破255个字符限制的,况且文本注释占用的字符量又大。
我们要做的首先要突破不含文本注释的255字符限制,这个我在百度中搜了下,有,不过我没试,因为我想要的是带文本注释的突破.
谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-15 20:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请高手帮忙

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-24 00:02 | 显示全部楼层
看来建筑行业的人员来这还是少啊!着急,请高手帮忙,感谢!!

TA的精华主题

TA的得分主题

发表于 2013-8-24 02:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-8-24 02:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Function JG(JSS, Optional x)    '返回计算公式的值或值的计算公式

    Dim S%, E%

    Dim JS As String

    If JSS = "" Then

        JG = ""

    Else

        If IsMissing(x) Then    '返回计算公式的值

            If Left(JSS, 1) = "=" Then

                JSS = Mid(JSS, 2)

            End If

            Do Until InStr(1, JSS, "[") = 0

                S = InStr(1, JSS, "[")

                E = InStr(1, JSS, "]")

                JSS = Left(JSS, S - 1) & Mid(JSS, E + 1)

            Loop

            JG = Evaluate("=" & JSS)

        ElseIf x = 2 Then    '返回值的计算公式或可计算的表达式或值本身

            If JSS.HasFormula = True Then

                JG = Mid(JSS.Formula, 2)

            Else

                If IsNumeric(Evaluate(JSS.Value)) = True Then

                    JG = JSS.Value

                Else

                    JS = JSS.Value

                    Do Until InStr(1, JSS, "[") = 0

                        S = InStr(1, JSS, "[")

                        E = InStr(1, JSS, "]")

                        JSS = Left(JSS, S - 1) & Mid(JSS, E + 1)

                    Loop

                    If IsNumeric(JSS) = True Or IsNumeric(Evaluate(JSS)) = True Then

                        JG = JS

                    End If

                End If

            End If

        End If

    End If

End Function

TA的精华主题

TA的得分主题

发表于 2013-8-24 02:17 | 显示全部楼层
Function Zj(s)
    Dim x
    s = Replace(Replace(s, "(", "("), ")", ")")
    Set x = CreateObject("MSScriptControl.ScriptControl")
    x.Language = "vbscript"
    With CreateObject("VBSCRIPT.REGEXP")
        .Global = True
        .Pattern = "\[.*?\]|{(.*?)}|[^0-9.+-/^*()]"
        Zj = x.Eval(.Replace(s, "$1"))
    End With
End Function

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-25 22:03 | 显示全部楼层
感谢帮助,只是我对VBA不懂,不知道为什么,我复制进模块后,运行不了,郁闷!看来还得多学学

TA的精华主题

TA的得分主题

发表于 2013-8-26 08:05 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 16:56 , Processed in 0.032077 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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