在Excel中使用公式可以轻松实现将数字转换为固定长度字符串(例如以最大数字的位数为准),如下图所示。
在VBA中如何实现这个功能,是否需要调用上图的Excel函数来实现?答案是:完全不需要,VBA中有多种实现方式,必有一款适合您。
- 方法1
Sub Demo1()
Set Rng = Range("E1:E5")
max_len = Len(Trim(Str(Application.Max(Rng))))
For Each c In Rng
Debug.Print Format(c, Application.Rept("0", max_len))
Next
End Sub
代码解析:
第2行代码将数据单元格区域保存在变量Rng中。
第3行代码使用max函数读取数据的最大值,str函数将数值转换为字符串,trim函数去除空格,len函数获得字符串长度,变量max_len为最大数值的位数,在此示例中为5。
第4~6行代码使用For语句循环遍历数据区域。
第5行代码使用Format函数格式化数字,其中引用rept函数创建格式字符串,此例中为“00000”
最终的输出结果如下。
- 方法2
Sub Demo2()
Set Rng = Range("E1:E5")
max_len = Len(Trim(Str(Application.Max(Rng))))
For Each c In Rng
Debug.Print Right(Application.Rept("0", max_len) & c, max_len)
Next
End Sub
代码解析:
第5行代码使用rept构建字符串,结果同上,然后使用字符串连接符&
与当前数字连接为一个字符,最后使用right函数截取右侧的字符,位数为max_len,实现截断多余的前缀0。
假设数字为333
,那么合并后的字符串为00000333
,截取右侧5位字符的结果为00333
。