强制VBA使用英国本地化

时间:2015-06-11 14:15:15

标签: excel vba excel-vba localization

我遇到了一个我创建的电子表格。它在我的电脑上工作正常,但我知道办公室里的其他一些电脑有美国本地化。有没有办法迫使VBA使用英国本地化检查事物?

我遇到的问题是,作为宏的一部分,我使用Text to Columns确保输入的日期显示为日期,而不是数字或文本。在我的电脑上似乎工作正常,但我知道我把它设置为英国本地化。

其他人遇到问题,并且不知道这是否是英国的本地化。不必考虑其他人的本地化或坚持他们在他们的计算机上有英国本地化,这是理想的,如果我可以在VBA中添加额外的代码行以强制在此宏中完成所有操作。英国本地化。

问题本身就是该程序正在将日期转换为英国格式的美国格式。当文本到列的阶段发生在宏中时,它似乎正在发生。

有没有办法让VBA自动检查是否是英国本地化,如果不是,那么将其更改为英国本地化,然后在最后更改它?我不想强迫每台电脑都有英国本地化,因为它可能会导致其他问题或者惹恼用户 - 这绝对是不可取的!

干杯!

3 个答案:

答案 0 :(得分:1)

将日期复制到矩阵时,我遇到了类似的问题。为了避免误传,我使用DateSerial(yy,mm,dd)将日期转换为数字,然后在电子表格中显示时将其格式化为日期。所有计算都可以正常工作(即网络日)。

答案 1 :(得分:0)

好的,所以我得出的结论是,这不仅仅是一个本地化问题。我已经检查了办公室中另一台设置为英国本地化的电脑,并在那里播放。

我遇到过这个问题的两个可能的解决方案是:

首先,由于Excel将日期存储为单独的标识符,因此请使用userform输入日期 - 计划是让用户单击“选择日期范围”框,该框将调用用户表单“选择日期”。这将包含六个下拉框 - 两组三个选择日,月和年。日期将是数字,月份文本,年份数字,因为这意味着用户和Excel都不会混淆哪个是哪个。

第二个解决方案是将excel存储为DDMMMYY - 或01jan2015。这是我的一位同事建议的另一种解决方案,但是因为我计划在某个时候自己教授用户形式,现在也许就是这样!

希望这可以帮助任何有同样问题的人:)

编辑 -

结束使用解决方案Trevor Eyre建议用户:Formatting MM/DD/YYYY dates in textbox in VBA用于表格。它优雅而实用。

答案 2 :(得分:0)

Guyz,

有一个非常棒的本机功能:

    DatePart("d", "01/08/2015") will return you the day
    DatePart("m", "02/08/2015") will return you the month

此功能显然考虑了本地设置。当我必须将代码发送到其他位置时,此功能解决了我的所有问题

一个非常糟糕的解决方案是使用:

    day=Split("somedate","someseparator")

希望这有帮助