我有以下代码来清除和重置单元格区域的格式。firstRow
和lastRow
的设置是否正确。
有些单元格的格式不正确。我发现这些单元格是通过寻找一个丢失的“€”符号。
我所知道的唯一解决方法是双击单元格,然后出现“€”符号,计算再次开始。
您是否知道更智能的解决方案以及检测和调试此问题的方法?
' Amount in EUR
Dim amountInEurRange As Range
Set amountInEurRange = Full.Range(f_amountInEUR & firstRow & ":" & f_amountInEUR & lastRow)
amountInEurRange.ClearFormats
amountInEurRange.Select
With Selection
.NumberFormat = "#,##0.00 [$€-de-DE]"
.Value = .Value
End With
1条答案
按热度按时间d7v8vwbk1#
显然,Excel没有将第二个值识别为数字,而是将其存储为文本。文本没有数字值,因此不会在
Sum
-函数中相加。文本也不会设置格式。首先,您需要了解单元格的 value 和 format 之间的区别。数值在内部以二进制格式存储。然后,该值以人类可读的形式显示。值
1234
可以显示为1234
、1.234,00
、1,234.0
€1,234.0
或1.23E+03
等格式设置不会更改其内部值第二件事是你需要了解Excel是如何工作的,如果你输入一些数据。你输入键1821,37,然后按回车键。如果在你的计算机上(不在Excel中!)区域设置将十进制字符定义为逗号,则Excel会将您的输入视为数字,并将其转换为内部二进制值。然后,它会查看单元格的格式并相应地显示它。但是,如果您的小数点字符是一个点,Excel不会将您的输入视为数字,因此会将其存储为字符串。字符串的存储方式完全不同(简单地说:每个字符为一个字节)。
当然,实际情况要复杂得多,Excel在接收到您的输入时也会检查格式。如果您将单元格设置为日期格式,它会尝试将您的输入解释为日期,这也是通过检查区域设置来实现的。将单元格设置为文本格式会将输入存储为文本,即使它可以转换为数字。
现在,您的工作表中的数据被输入,但Excel没有将其解释为数字。可能是具有不同区域设置的用户输入的,也可能是从CSV导入的。当您双击单元格时,Excel会处理内容,就像您刚刚输入一样-在您的PC上,它 * 可以 * 解释为数字,因此会被转换。看起来相似或相同,但是是完全不同的值。
你可以做的就是把下面的代码添加到你的例程中,它会尝试把一个字符串转换成一个数字