在EXCEL单元格中,常常需要输入数字数据。而输入数据,常常会遇到需要确定数据的位数的情况。
如何限制单元格中所输入的数字,包括整数和小数,总位数的长度。
如下表一样,限制A列单元格,所要输入的数字,整数个数加上小数的个数,总位数只能是6。
如果输入的数字,总位数(不论有几个整数和小数)超过6或不足6位,那么,该单元格的内容自动变成“整数与小数的总位数只能是6位”,用于提示重新输入。
要解决这种问题,使用公式或其它的办法,是非常难于实现的,在这里,得使用VBA来实现。
如下图的VBA代码,就是实现如上需求的功能代码,请注意对象的名称及事件名称,这很关键。
上图的代码,仅针对工作薄的Sheet1的A列的数字数据。您可以根据需要自行修改代码以吻合您的工作需求。关于VBA代码的使用方法及其它知识,请参阅本站的其它文章,在此,就不过多阐述了。
知识扩展:
下面讲解上图代码的功能。
Dim MyLenth As Single
MyLenth = 6
这两行代码,用来确定整数位数和小数位数的总和,在此为6,可根据需要修改。
MyColumn = 1
此代码标识,仅针对第一列即A列的数字位数进行限制。
Application.WorksheetFunction.IsNumber(Sheet1.Cells(MyRow, MyColumn).Value))
此代码通过调用函数IsNumber用来判断单元格内容是否为数字,如果是数字就加以限制,否则可自由输入。
Application.WorksheetFunction.Substitute(Trim(Sheet1.Cells(MyRow, MyColumn).Value), ".", "")
此代码用于将被选择单元格中的数字的小数点符号去除,目的在于方便统计总位数。