VBA为:
Functionzdy(rng) zf = rng WithCreateObject("vbscript.regexp") .Pattern = "\[.*?\]" .Global = True zf = .Replace(zf, "") zf = Replace(zf, "=","") zdy = Application.Evaluate(zf) End With EndFunction
在A1输入[周长]149*4.5-[洞口](1.82*0.62+5.3*3.3+1.02*0.62+0.52*0.32+6.6*3.6+0.4*0.62+1.52*2.02+1.3*3.9+1.5*2.1+2.4*3.3+3*3.6+7.3*3.9+2.4*2.5+6*3.3+1.52*0.92+5.6*3.6+7.5*3.3+5.7*3.6+5.7*3.3+7.5*3.6+6*3.6+2.4*3.3+1.2*3.3+6*3.3+1.22*7.2+1.2*2.1+7.2*3.3)+[雨蓬板](11.4*1.2+13.1*1.2+2.3*1.2)+[小口](17.2+20.4+9.1+5.7+11.4+10.2+15.1+7.4+18.6+12.8+14.1+12.9+12.3+14.7+13.2+11.4+9+12.6+5.4+21)*0.1,在B1输入=zdy(A1),回车后出现#VALUE!,请教,感谢
本帖最后由 橘子红 于 2015-12-15 19:09 编辑
'evaluate 跟工作表用宏表定义的时候一样,超过255字符就 value错误.可以用vbs的eval函数代替
Function zdy(Rng)
zf = Rng
With CreateObject("vbscript.regexp")
.Pattern = "\[.*?\]"
.Global = True
zf = .Replace(zf, "")
zf = Replace(zf, "=", "")
With CreateObject("MSScriptControl.ScriptControl")
.Language = "vbscript"
zdy = .Eval(zf)
End With
End With
End Function
|