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