VBA欧美数字格式
Posted
技术标签:
【中文标题】VBA欧美数字格式【英文标题】:VBA European and American number format 【发布时间】:2015-12-17 12:32:03 【问题描述】:我正在使用 VBA 将数据从 EXCEL 发送到 mysql 数据库,当我从不同的计算机运行代码时遇到问题。不同的计算机有不同的分隔符(“。”或“,”)配置,我在转换数字时遇到了一些问题。
我需要将数字从
“100.000,232”格式转“100,000.232”格式
我一直在环顾四周,但似乎无法使其与 NumberFormat 或 =SUBSTITUTE() 函数一起使用。
我目前的代码如下
value = Int(Cells(MyLine, MyColumn).value) & "." & CLng(Split(CStr(Cells(MyLine, MyColumn).value), separator)(1))
分隔符 是.
或,
。
当我有“0,001”时,此代码失败,因为它转换为“0.1”而不是“0.001”
你能帮我解决这个问题吗?
最好的问候,西蒙。
【问题讨论】:
最简单的方法是更改窗口中的分隔符...但是,如果作为值发送,应该没有问题...否则将所有单元格更改为文本,然后使用 ctrl+h删除 。然后将 , 替换为 . 我正在开发一个在不同计算机上工作的代码。我们的想法是不改变 Windows 设置或用户界面的任何内容。我想在用户视线无法触及的地方进行转化和/或更改。 你试过简单的valueForMySQL = Str(Cells(MyLine, MyColumn).Value)
吗? Str
将始终使用英文小数分隔符,而 MySQL 将始终需要英文小数分隔符。所以这应该独立于语言环境设置。
您错误地认为数字使用逗号还是句点作为小数位对计算机很重要。除非您使用数字的文本表示来促进传输(例如传递 CSV),否则它不会。如果将 excel 数字导入 SQL 数据库,则区域设置无关紧要,因为一台计算机正在写入导出并读取导入。只有当一台计算机正在写入一个像 CSV 这样的临时文件,该文件传递到具有不同区域设置的另一台计算机时,才会出现问题。
话虽如此,也许看看Range.FormulaLocal property。
【参考方案1】:
我找到了修复它的方法。 Replace(Cells(Lines, cols).value, separator, ".") 其中“分隔符”是用户设置的手动配置。它可以是“,”或“。”
【讨论】:
以上是关于VBA欧美数字格式的主要内容,如果未能解决你的问题,请参考以下文章