vba不会重新计算单元格格式

时间:2017-02-02 19:27:18

标签: excel vba excel-vba

我正在努力解决当我尝试使用NumberFormat将格式更改为单元格时出现的问题......

单元格包含类似“00:00:23,45”的文本,格式为文本。我将其格式更改为“ss.00; @”。 当我在excell中选择单元格时,我看到格式已更改为自定义(并且在菜单中格式正确),但文本仍为“00:00:23,45”,直到我双击单元格并且按回车(然后他应用正确的格式)。我附上了代码:

Questa_cartella_di_lavoro.Sheets("Foglio1").Range("F14").value = "00:00:23,45"
Questa_cartella_di_lavoro.Sheets("Foglio1").Range("F14").NumberFormat = "ss.00;@"

我应该看到“23,45”

P.S。我已经尝试了Questa_cartella_di_lavoro.Sheets("Foglio1").calculate

提前感谢您的帮助,

洛伦佐组成罗马。

3 个答案:

答案 0 :(得分:0)

您正在单元格中放置文字字符串。更改该单元格的NumberFormat不会影响文本字符串的显示。

它会影响单元格中数字的显示。

答案 1 :(得分:0)

听起来单元格值被识别为文本,在这种情况下,您的格式化将无效。

在使用变量将其放入单元格之前,尝试将其存储为日期。

Dim cellValue As Date
cellValue = CDate("00:00:23,45")

Questa_cartella_di_lavoro.Sheets("Foglio1").Range("F14").Value = cellValue

Questa_cartella_di_lavoro.Sheets("Foglio1").Range("F14").NumberFormat = "ss.00;@"

修改

我在测试时遇到CDate行的类型不匹配错误 - 由于某种原因,它无法将文本解析为Date。这对我有用:

Questa_cartella_di_lavoro.Sheets("Foglio1").Range("F14").NumberFormat = "ss.00;@"

Questa_cartella_di_lavoro.Sheets("Foglio1").Range("F14").Value = Questa_cartella_di_lavoro.Sheets("Foglio1").Range("F14").Value

首先设置单元格格式,然后重新输入Excel转换为具有新单元格格式的正确数据类型的现有值。

答案 2 :(得分:0)

这对我有用:

Range("A1:A2").NumberFormat = "@" ' Text format
Range("A1") = Replace("00:00:23,45", ",", ".") ' "00:00:23.45"

Range("A2").NumberFormat = "ss.00;@"
Range("A2") = Replace("00:00:23,45", ",", ".") ' "23.45"

但如果,是您当地的小数点分隔符,则可能是:

Range("A2").NumberFormat = "ss.00;@"
Range("A2").FormulaLocal = "00:00:23,45"

Range("A2").NumberFormat = "ss.00;@"
Range("A2") = "00:00:23,45"
Range("A2").Replace ",", "."