在Excel工作表中,使用自定义格式可以轻松实现指定宽度(数字个数)格式,例如设置单元格格式为“000”,输入数字6,则单元格显示内容为006,如下图所示。

在VBA中如何实现类似的数据格式转换呢?
有的小伙伴可能说这个很简单,可以使用Range对象的Text数据,例如Cells(1,1).Text可以得到显示内容为006。
这个方法是可行的,其实还有更简单的方法。
接下来创建一个自定义函数实现格式转换,函数提供了两个参数
- 参数number:待转换的数字
- 参数digits:指定宽度
Function FormNum1(number, digits)
FormNum = Right(Application.Rept("0", digits) & number, digits)
End Function
代码解析:
Application.Rept("0", digits)调用工作表函数Rept,生成指定个数的0组成的字符串,以下简称为填充字符串。
试用&连接符将填充字符串和数字合并,然后使用Right函数提取字符串从右侧开始的指定位数。
调用自定义函数也非常简单
Sub demo()
Debug.Print FormNum(6, 3)
End Sub
直接使用VBA的Format函数实现,更简单。
Function FormNum1(number, digits)
FormNum = Format(number, Application.Rept("0", digits))
End Function
代码解析:
同样调用工作表函数Rept,生成指定个数的0组成的字符串,只是此处作为格式字符,相当于Excel中的自定义格式。
版权声明:本文为taller_2000原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。