LibreCalc的Starbasic宏中如何将字符串转换为可执行表达式
StarBasic 字符串转变量取值的两种实现方案
方案1:动态执行表达式(直接满足需求)
StarBasic 提供ExecuteStatement方法可以执行拼接的字符串表达式,你可以封装一个通用取值函数:
' 封装按变量名字符串取变量值的函数 Function getVarValueByName(varName As String) As Variant Dim execCmd As String execCmd = "getVarValueByName = " & varName ExecuteStatement execCmd End Function ' 调用示例 print getVarValueByName(splitColours(1)) ' 输出结果和直接调用cLightPurple完全一致
注意:该方案仅适合变量名来源完全可控的场景,不可用于执行外部传入的不可信字符串,避免恶意代码执行风险。
方案2:字典存储键值对(更推荐的工程化方案)
不需要依赖动态执行,直接用字典对象存储颜色名和RGB值的映射,后续取值更安全、性能更好:
' 初始化字典对象存储颜色映射 Dim colourMap As Object colourMap = CreateObject("Scripting.Dictionary") ' 写入所有颜色配置 colourMap("cLightYellow") = RGB(24,194,205) colourMap("cLightPurple") = RGB(224,194,205) colourMap("cLightGreen") = RGB(175,208,149) colourMap("cBlue") = RGB(114,159,207) colourMap("cOrange") = RGB(232,162,2) colourMap("cGreen") = RGB(63,175,70) colourMap("cBlack") = RGB(49,64,4 ) ' 直接用字符串作为键取值 print colourMap(splitColours(1))
该方案不需要维护额外的颜色名字符串常量,新增/修改颜色时只需要操作字典即可,后续维护成本更低。
内容的提问来源于stack exchange,提问作者Estatistics
相关产品推荐
相关产品推荐

