wangshang323 发表于 2015-2-23 17:21:16

excel 疑问

小弟最近学习了用lisp调用EXCEL、有个疑问请大神搭救:
我想写用LISP自动写EXCEL。要用到excel的公式 我用字符串的方式写入了对应的单元格。
已经成功了 比如"=土层参数表!D20".
问题来了 显示的居然是"=土层参数表!D20" 而不是对应的D20单元格的内容。可是手动点进去回车就好了。
由于这样引用的地方很多 要是全手动一个一个点太费神了。希望高手支招。。。
祝大家新年快乐!

mmmmmm 发表于 2015-2-24 17:21:53

不要修改Range的Value或Value2属性,直接修改其Formula属性为引用的字符串。

wangshang323 发表于 2015-2-24 20:53:13

多谢楼上的兄弟。只是是否能详细介绍下用法。谢谢了。祝新年快乐!

mmmmmm 发表于 2015-2-26 23:03:11

你说的"我用字符串的方式写入了对应的单元格"应该是对单元格range使用put-property时用value,value2或者text属性,将这个属性改成用Formula就行了

llsheng_73 发表于 2015-3-4 13:12:31

本帖最后由 llsheng_73 于 2015-3-4 13:16 编辑

mmmmmm 发表于 2015-2-24 17:21 static/image/common/back.gif
不要修改Range的Value或Value2属性,直接修改其Formula属性为引用的字符串。

不一定,我就是直接修改value属性写入公式并且得到正确及时计算的哟
只需要先把将要写入公式的range进行适当的格式设置
(vlax-put-property(msxl-get-range app1"D:E")"NumberFormat"(vlax-make-variant "G/通用格式"))
然后就可以把公式当成一般数值往range里边写了
    (vlxls-put-row-value app1(strcat"D"(itoa i))(strcat"=VLOOKUP(LEFT(A"(itoa i)",LEN(A"(itoa i)")-"(itoa ld)"),"sh1"!A:E,2,FALSE)")t)
    (vlxls-put-row-value app1(strcat"E"(itoa i))(strcat"=VLOOKUP(LEFT(A"(itoa i)",LEN(A"(itoa i)")-"(itoa ld)"),"sh1"!A:E,5,FALSE)")t)
页: [1]
查看完整版本: excel 疑问