Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
强制VBA使用英国本地化_Vba_Excel_Localization - Fatal编程技术网

强制VBA使用英国本地化

强制VBA使用英国本地化,vba,excel,localization,Vba,Excel,Localization,我创建的电子表格遇到了问题。它在我的电脑上运行良好,但我知道办公室里的一些其他电脑有美国本地化。有没有办法强迫VBA使用英国本地化检查 我遇到的问题是,作为宏的一部分,我使用文本到列来确保输入的日期显示为日期,而不是数字或文本。在我的电脑上,它似乎运行良好,但我知道我将其设置为英国本地化 其他人也有问题,不知道这是否是英国本地化。与其勉强检查其他人的本地化,或坚持他们的计算机上有英国本地化,不如在VBA中插入一行额外的代码,强制此宏中的所有操作都在英国本地化中完成 问题本身是,该计划正在将日期从

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

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

其他人也有问题,不知道这是否是英国本地化。与其勉强检查其他人的本地化,或坚持他们的计算机上有英国本地化,不如在VBA中插入一行额外的代码,强制此宏中的所有操作都在英国本地化中完成

问题本身是,该计划正在将日期从英国格式转换为美国格式。这似乎是在宏中出现“文本到列”阶段时发生的

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


干杯

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

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

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

第二种解决方案是让excel将日期存储为DDMMMYY,例如2015年1月1日。这是我的一位同事建议的另一种解决方案,但由于我计划在某个时候自学用户表单,现在也可以

希望这能帮助有同样问题的人:)

编辑-

最终使用了Trevor Eyre在这里建议的解决方案:用于用户表单。它既优雅又实用。

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")

希望这有帮助

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

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