将Pad函数转换为VBA中的货币值

将Pad函数转换为VBA中的货币值,vba,excel,Vba,Excel,我试图在VBA中创建类似于stru pad的函数,在货币值之前返回前导零 例如,如果我想用6位数字填充它: Input: $ 423,67 Output: 000423 Function str_pad(text As Variant, padCharacter As String) As String str_pad = Format(text, "0000.00") str_pad = Replace(str_pad, ".", "") End Functi

我试图在VBA中创建类似于
stru pad
的函数,在货币值之前返回前导零

例如,如果我想用6位数字填充它:

Input:
$ 423,67
Output:
000423
Function str_pad(text As Variant, padCharacter As String) As String
        str_pad = Format(text, "0000.00")
        str_pad = Replace(str_pad, ".", "")
End Function
到目前为止,它可以添加前导零,但我无法找到在没有小数的情况下实现它的方法:

Input:
$ 423,00
Current output:
000423
Desired output:
042300
由于用户通常不在逗号后包含零,因此我的代码应该能够将它们放在输出中

代码:


将函数更改为如下所示,这将根据需要格式化数字,然后删除十进制分隔符,因此数字显示与预期一致,我省略了总长度,因为这将用6位数字填充数字:

Input:
$ 423,67
Output:
000423
Function str_pad(text As Variant, padCharacter As String) As String
        str_pad = Format(text, "0000.00")
        str_pad = Replace(str_pad, ".", "")
End Function

要使用这个公式,您可以使用如下公式:
=str_pad(A1,0)

您的
423,67=>000423
423,00=>042300
的示例似乎相互矛盾,否则它将是一个副本。可能有兴趣。。。也完全过火了,但无论如何都很有趣;-)非EN-US“逗号作为小数分隔符”在以EN-US为中心的VBA中是否可以工作,而不需要区域设置修饰符?您的格式掩码可能必须使用句点,而不考虑系统的区域小数分隔符。@Jeeped谢谢您的评论,最初我确实使用句点,但当我意识到OP使用逗号时,我想我应该修改我的答案,。。。。无论如何,你总是通过尝试来学习,谢谢:)