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

vba不会重新计算单元格格式,vba,excel,Vba,Excel,我正在努力解决一个问题,当我尝试使用NumberFormat将格式更改为单元格时 该单元格包含类似“00:00:23,45”的文本,格式为文本。我将其格式更改为“ss.00;@”。 当我在excell中选择单元格时,我看到格式已更改为自定义格式(菜单中的格式正确),但文本仍为“00:00:23,45”,直到我双击单元格并按enter键(然后他应用正确的格式)。我附上代码: Questa_cartella_di_lavoro.Sheets("Foglio1").Range("F14").value

我正在努力解决一个问题,当我尝试使用NumberFormat将格式更改为单元格时

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

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”)。计算

提前感谢您的帮助


洛伦佐来自罗马。

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


这将影响单元格中数字的显示。

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

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

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

这对我很有用:

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"


那么我该怎么办呢?我很快看到了Hi-GSerg的可能重复,但我认为它没有提到这个解决方案(TextToColumns),我个人不会为此使用
TextToColumns
。这是一个庞大而复杂的文本文件解析机制,我不确定在某些地区或某些情况下是否会有副作用。啊,好吧,你会用什么来代替呢?我尝试了这个解决方案,但excel得到的值是文本,我不知道为什么。TextToColumns工作正常,但它给了我另一个错误
Range("A2").NumberFormat = "ss.00;@"
Range("A2") = "00:00:23,45"
Range("A2").Replace ",", "."