【发布时间】:2015-03-10 10:54:39
【问题描述】:
如何防止 Excel 表单上的文本框将日期重新格式化为美国格式?
我在 Excel 中有一个包含文本框的表单。文本框在工作表上有一个单元格作为它的控制源。例如Settings!B9
引用单元格 (Settings!B9) 的内容是以英国格式格式化的日期。但是,当显示表单时,它会将日期重新格式化为美国格式。这不是用户所期望的,并且用户并不总是清楚它正在这样做,这可能会导致一些灾难性的后果。我看不到允许我控制日期格式的文本框的任何属性,并且单元格的日期格式正确设置为 *dd/mm/yyyy。由于重新格式化是在幕后完成的,我什至看不到如何使用 VBA 来改变它,因为它需要以某种方式中断文本框和引用单元格之间的绑定。
【问题讨论】:
-
加上一个好问题,但我不确定你能做到。你不能允许在工作表上直接编辑吗?使单元格看起来像一个文本框。
-
@Bathsheba 用户可以编辑工作表,但我试图通过使用表单让他们更轻松。表单上还有很多其他设置,包括带有 VBA 代码的组合框等,所以不幸的是它并不是那么简单。我很难相信没有办法做到这一点,所以在这里发布了这个问题,因为之前似乎没有人问过这个确切的问题;尽管有很多关于在 VBA 代码中更改日期格式的问题!希望有人知道一种方法,或者至少这个问题将证明你不能。附:谢谢夸奖。
-
@AxelRichter 不同意我的测试:我在单元格中输入:10/03/2015 单元格显示:10/03/2015 公式栏显示:10/03/2015 文本框显示: 3/10/2015 地区:英国 单元格格式:*dd/mm/yyyy
-
您可以使用 VBA 代码做到这一点。例如,对于链接到单元格 A1 的简单文本框,您可以将其放入 TextboxChange 事件代码中:` With TextBox21 .Value = Format(.Value, "dd-mmm-yyyy") End With`
-
@RonRosenfeld 那时我很兴奋。但是在测试中,我发现当您从该字段中取出时,它实际上会将其更改为错误的日期!所以我输入了 2015 年 3 月 10 日,当我退出该字段时,它变为 2015 年 10 月 3 日。