【问题标题】:Force VBA to use British localisation强制 VBA 使用英国本地化
【发布时间】:2015-08-27 07:13:51
【问题描述】:

我创建的电子表格遇到了问题。它在我的 PC 上运行良好,但我知道办公室中的其他一些 PC 具有美国本地化。有没有办法强制 VBA 使用英国本地化进行检查?

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

其他人遇到问题,不知道这是否是英国本地化。不必费心检查其他人的本地化或坚持他们的计算机上有英国本地化,如果我可以在 VBA 中添加一行额外的代码来强制在这个宏中完成的所有事情都在英国本地化。

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

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

干杯!

【问题讨论】:

  • TextToColumns 有一个 FieldInfo 参数,允许您指定日期顺序(DMY 等)。它不是绝对 100% 可靠的,特别是如果数据中有时间部分。如果你可以的话。我会单独解析数据,而不是使用 TTC。
  • 干杯罗里。在这种情况下,将数据放入用户表单中是否会更好?日期字段非常重要,因为它不仅可以从中计算出宏的结果,而且还可以命名生成的报告 - 显然两者都需要正确!
  • 我不确定用户表单会有什么不同?也许您可以发布宏代码,以便我们可以看到您实际在做什么。
  • 计划是有一个用户表单,以便用户选择日期,然后电子表格根据此选择进行计算。这有望消除日期和月份切换的问题,因为用户不会混淆例如 1.2.15 是指二月一日还是一月二日。

标签: vba excel localization


【解决方案1】:

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

我遇到的这个问题的两个潜在解决方案是:

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

第二种解决方案是让 excel 将日期存储为 DDMMMYY - 或 01jan2015 例如。这是我的一位同事建议的另一种解决方案,但正如我计划在某个时候自学用户表单一样,现在也可以!

希望这对遇到同样问题的人有所帮助:)

编辑-

最终使用了 Trevor Eyre 建议的解决方案:Formatting MM/DD/YYYY dates in textbox in VBA 用于用户表单。它优雅而实用。

【讨论】:

    【解决方案2】:

    各位,

    有一个非常棒的原生函数:

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

    此功能似乎考虑了本地设置。当我不得不将代码发送到其他位置时,此功能解决了我的所有问题

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

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

    希望对你有帮助

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2021-09-22
        • 1970-01-01
        • 2014-06-17
        • 1970-01-01
        • 2019-03-13
        • 2019-05-03
        • 1970-01-01
        • 2011-08-12
        • 1970-01-01
        相关资源
        最近更新 更多