如何在Excel VBA中使用输入掩码?

问题描述 投票:0回答:2

请仔细阅读问题,其中提到了 Excel VBA。 不优秀

我的任务是修复 VBA 表单上的日期输入。 文本框应让用户输入日期为

MM/DD/YYYY

我需要使用输入掩码,不允许执行诸如在日历之后验证日期或使用日历之类的操作。到目前为止,我已经能够使用提到的 2 种方法(使用

ISDATE
后强制格式化)。

但是,现在已经明确它必须是一个掩码,因此输入时会过滤键,输入日期时掩码可见:

__/__/____

在您看到下划线的地方,他应该只能输入数字,并且 / 始终位于这些位置

有办法做到这一点吗?我只能在Access VBA中找到遮罩的教程。

excel input masking vba
2个回答
0
投票

我们无法像 Excel 单元格那样将输入掩码应用于 Excel 表单文本框。下面我引用一个名为

Widget
.

的示例文本框。

解决方案是为 MSForms.TextBox 编写一个事件处理程序类,该类实现以下事件处理程序,其中我们确保 Widget 的标题在初始化时和用户修改时设置为掩码或掩码的一部分它。

Sub Widget_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Sub Widget_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

这样我们就可以根据用户输入的内容来控制文本框中显示的内容。


-1
投票

我在 Google 上搜索“Excel 输入掩码”,第二个结果是:使用 Microsoft Excel 输入掩码,作者:Allen Wyatt...

使用输入掩码

...您可能想知道是否有一种方法可以设置自动添加冒号的输入掩码。好消息是,确实有。坏消息是没有,没有。听起来很混乱?让我解释一下...

您可以设置自定义格式,以您想要的任何格式显示您的时间。例如,您可以使用以下步骤:

  1. 选择要用于时间输入的单元格。
  2. 从单元格菜单中选择
  3. 格式。 Excel 显示“设置单元格格式”对话框。 确保显示数字
  4. 选项卡。

  5. image: The Number tab of the Format Cells dialog box.在类别列表中,选择自定义
  6. Type
  7. 框中的内容替换为
  8. #":"00
    单击
    确定
  9. 您现在可以仅使用数字输入时间。问题(这是坏消息)是单元格并不真正包含时间。如果您输入
  10. 230
(表示 2:30),则它不包含 2:30 作为时间,而是包含 230。因此,您不能在时间计算中直接使用单元格的内容。

为了克服这个问题,您可以使用另一列来显示转换为时间的输入数字。您所需要做的就是使用公式进行转换。例如,如果您输入的时间在单元格
A3

中,您可以在不同的单元格中使用以下公式进行转换:

=(INT(A3/100)/24)+((A3 - (INT(A3/100)*100))/1440)

设置包含上述公式的单元格的格式,使其显示多种时间格式之一,这样就一切就绪了。


(完整文章及更多内容请参见
来源

。)

© www.soinside.com 2019 - 2024. All rights reserved.