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欧美数字格式的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 格式化数字

在 Excel VBA 中更改为加拿大 (CDN) 法语数字格式

excel vba:列列表的数字格式

EXCEL VBA:根据值范围格式化现有数字单元格

如何用vba将文本数字改为数值?

vba怎么存储17位数字