2017-02-02 62 views
0

我有,当我尝试使用的NumberFormat更改格式的单元格occures问题挣扎......VBA不会重新计算一个单元格的格式

的单元格中包含像“00:00:23文本,45“并被格式化为文本。我将其格式更改为“ss.00; @”。 当我选择Excel中的单元格时,我发现格式更改为自定义(并且在菜单中格式正确),但文本保持为“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”

附:我已经试过Questa_cartella_di_lavoro.Sheets("Foglio1").calculate

感谢您的帮助,

洛伦佐形式罗马。

+0

的[Excel中可能重复:如何强制细胞评估](http://superuser.com/q/299437/52365) – GSerg

+0

嗨GSerg,我很快看到,但我认为它没有提到这个解决方案(TextToColumns) –

+0

我个人不会为此使用'TextToColumns'。这是一个解析文本文件的大而复杂的机制,我不确定某些语言环境或某些情况下是否会有一些副作用。 – GSerg

回答

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 ",", "." 
+0

我试过这个解决方案,但是excel获得了文本的值,我不知道为什么。 TextToColumns工作,但它给了我另一个错误 –

0

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

这会影响放置在单元中的号码的显示。

+0

所以我该怎么办? –

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转换为新单元格的格式正确的数据类型。

+0

CDate(“00:00:23,45”)给出类型不匹配错误... –

相关问题