我只花了一天半的时间在论坛上搜索此解决方案,但它似乎还没有出现,因此我正在分享。
在Access中,您可以使用Decimal Places属性指定表单控件显示的小数位数。 您还可以在表设计中指定存储数据的小数位数。 不幸的是,这两个都不限制数据。 将小数位属性设置为2的控件可以具有1.23456的条目! Access接受输入。
这杀死了我的一些表格计算。 我需要一种不会引起其他事件触发的解决方案,如果您仅通过使用Round()更改控件OnExit的值,就会发生这种情况。 我还需要一种可以轻松地在6种表单的360个文本框中实现的解决方案。 为每个有限的击键编写一个Sub不会发生。
解:
私有子Form_KeyPress(KeyAscii作为整数)
如果InStr(1,Me.Controls(Me.ActiveControl.Name).Text,“。”)<> 0然后
如果Me.Controls(Me.ActiveControl.Name).SelStart> = InStr(1,Me.Controls(Me.ActiveControl.Name).Text,“。”)或Me.Controls(Me.ActiveControl.Name).SelStart> = InStr(1,Me.Controls(Me.ActiveControl.Name).Text,“。”)+ 1然后
如果Len(Me.Controls(Me.ActiveControl.Name).Text)= InStr(1,Me.Controls(Me.ActiveControl.Name).Text,“。”)+ 2然后
如果KeyAscii <> 8然后
KeyAscii = 0
万一
万一
ElseIf Me.Controls(Me.ActiveControl.Name).SelStart> = InStr(1,Me.Controls(Me.ActiveControl.Name).Text,“。”)+ 2然后
如果KeyAscii <> 8然后
KeyAscii = 0
万一
万一
万一
结束子
上面的代码是从FORM的KeyPress事件触发的,并作用于窗体上的所有控件。 它确定ActiveControl的Text值和控件中的光标位置。 使用这些,它将基于光标相对于“。”位置的位置来允许或忽略按键。
若要工作,窗体的“键预览”属性也需要设置为“是”。
希望这对某人有帮助。
From: https://bytes.com/topic/visual-basic/insights/888922-access-textboxes-limiting-decimal-place-entry