我有一个很长的VBA宏,可以将内容放入Excel工作表中。一些内容是简单的公式,如=Q7*.3
。当宏完成时,它们在单元格中显示为文本,而不是值。 F9无法修复它。
现在,如果我只是单击其中一个单元格,然后在编辑栏中点击返回,则公式会立即正确计算。从那时起,一切都适用于那个细胞。
我记得以前见过这个,但我记不起解决方案了
它出现是某种状态标志没有在单元格上设置,所以Excel不认为它有必要计算它吗?例如:
TempD = GetFXRate("HUF")
WS.Cells(R, 20).Formula = "=Q" & R & IIf(Round(TempD, 4) = 1, "", "*" & TempD)
所有值和常量都有效。 TempD是~0.3。所有引用的单元格都存在。第一次迭代R = 7。
答案 0 :(得分:2)
根据您的回答'根据我的最终评论,唯一可能的解决方案可能是您的normal
单元格样式设置为text
,这样您的新工作表将以normal
样式添加{{1而不是text
。
您可以通过右键点击general
标签normal
部分的cell styles
样式并点击home
来更改此设置。
点击modify
按钮,选择format
,然后点击general
再点击ok
。
再次运行您的脚本,您会发现您的新工作表是使用所有单元格的常规数字格式创建的。
答案 1 :(得分:0)
出现问题取决于最初制作纸张的方式。如果您手动创建工作表,它将获得正确的格式,一切正常。如果您在VBA代码中创建工作表,它显然将默认格式设置为不同的 - 不是文本,某种不确定的格式。因此,即使您没有在代码中的任何位置应用单个.NumberFormat,或者odder仍然继续并在稍后的某个时间点正确设置格式,它仍然会以这种奇怪的状态结束。我认为这是一个错误。
无论如何,解决方案是在创建后立即设置所有单元格的格式:
Dim WS As Worksheet
Set WS = WB.Sheets.Add(After:=Worksheets(Worksheets.Count))
WS.Cells.NumberFormat = "General"
从该点插入工作正常,设置格式也是如此。