Excel宏将字段中的公式保留为文本

时间:2015-12-15 14:35:03

标签: excel excel-vba vba

我有一个很长的VBA宏,可以将内容放入Excel工作表中。一些内容是简单的公式,如=Q7*.3。当宏完成时,它们在单元格中显示为文本,而不是值。 F9无法修复它。

现在,如果我只是单击其中一个单元格,然后在编辑栏中点击返回,则公式会立即正确计算。从那时起,一切都适用于那个细胞。

我记得以前见过这个,但我记不起解决方案了

  • 是的,格式设置为数字格式
  • 是的,我尝试手动更改格式
  • 是的,我将.Calculate发送到工作表,并手动执行
  • 不,没有引用的引用或类似的内容
  • 不,我没有更改任何内容以使其正确计算,只需在编辑栏中点击返回

出现是某种状态标志没有在单元格上设置,所以Excel不认为它有必要计算它吗?例如:

TempD = GetFXRate("HUF")
WS.Cells(R, 20).Formula = "=Q" & R & IIf(Round(TempD, 4) = 1, "", "*" & TempD)

所有值和常量都有效。 TempD是~0.3。所有引用的单元格都存在。第一次迭代R = 7。

2 个答案:

答案 0 :(得分:2)

根据您的回答'根据我的最终评论,唯一可能的解决方案可能是您的normal单元格样式设置为text,这样您的新工作表将以normal样式添加{{1而不是text

您可以通过右键点击general标签normal部分的cell styles样式并点击home来更改此设置。

Modify Cell Style

点击modify按钮,选择format,然后点击general再点击ok

enter image description here

再次运行您的脚本,您会发现您的新工作表是使用所有单元格的常规数字格式创建的。

答案 1 :(得分:0)

出现问题取决于最初制作纸张的方式。如果您手动创建工作表,它将获得正确的格式,一切正常。如果您在VBA代码中创建工作表,它显然将默认格式设置为不同的 - 不是文本,某种不确定的格式。因此,即使您没有在代码中的任何位置应用单个.NumberFormat,或者odder仍然继续并在稍后的某个时间点正确设置格式,它仍然会以这种奇怪的状态结束。我认为这是一个错误。

无论如何,解决方案是在创建后立即设置所有单元格的格式:

Dim WS As Worksheet
Set WS = WB.Sheets.Add(After:=Worksheets(Worksheets.Count))
WS.Cells.NumberFormat = "General"

从该点插入工作正常,设置格式也是如此。