找回密码
 立即注册

QQ登录

只需一步,快速开始

darkelf
论坛元老   /  发表于:2013-8-9 08:48  /   查看:4395  /  回复:3
在SpreadSheet载入的模板文件中设置有单元格的算式。
因为数据绑定时候自动将多余的行清空了,所以目前的保存方式是将模板的每个单元格的Formula都保存起来,
然后在数据绑定后,增加行,并且将保存的Formula复原。

现在出现的问题是,复原后的Formula不能自动根据当前行改变。
例如: 复制时候是Formula = "A41 + C41"
复原后,RecalculateAll执行后,依旧是Formula = "A41 + C41"

请问这个该如何处理?


  1. ' 数据绑定前,保存模板的单元格算式
  2. with fpsp1
  3.         Dim fpFormulas As New Generic.List(Of Generic.List(Of String))
  4.         for i as integer = 0 to 3
  5.           Dim fpFormula As New Generic.List(Of String)
  6.           For j As Integer = 0 To 30
  7.                 fpFormula.Add(.ActiveSheet.GetFormula(i, j))
  8.           next
  9.           fpFormulas.Add(fpFormula)
  10.         next

  11. ’-------------------数据绑定开始--------------------------
  12. ...
  13. ’-------------------数据绑定结束--------------------------

  14.         ' 数据绑定后,重新将模板的算式复原
  15.         .ActiveSheet.AddUnboundRows(0, 4)        '新增与数据不绑定的行, 模板数据保存

  16.         for i as integer = 0 to 3
  17.           For j As Integer = 0 To 30
  18.                 With .ActiveSheet.Cells(i, j)
  19.                     .Formula = fpFormulas(i).Item(j)
  20.                 end with
  21.           next
  22.         next

  23.     .ActiveSheet.RecalculateAll()    ' 设置结束后,重新计算单元格内的算式
  24. end with

复制代码

3 个回复

倒序浏览
山水
初级会员   /  发表于:2013-8-9 15:42:00
沙发
看了您的帖子后不太明白您的需求。
从您的例子: 复制时候是Formula = "A41 + C41"
复原后,RecalculateAll执行后,希望Formula是什么?
回复 使用道具 举报
darkelf
论坛元老   /  发表于:2013-8-9 18:20:00
板凳
自己解决了。

之前的问题是,复制的时候,Formula ="A41+C41“
复制到0行的时候,希望他变成Formula ="A0+C0"这样的。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-8-12 09:59:00
地板
回复 3楼darkelf的帖子

好的,感谢反馈。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部