Excel 将数字格式化为两位数字,即使第一位是0 vba

Excel 将数字格式化为两位数字,即使第一位是0 vba,excel,vba,formatting,string-formatting,Excel,Vba,Formatting,String Formatting,我想能够使用VBA显示1-24之间的任何数字作为2位数字。显然,唯一有问题的是1-9,我希望显示为01、02、03等。有没有办法执行此操作?您无法格式化整型变量,您需要使用字符串变量进行格式化 您可以使用day函数从日期中提取日数,然后使用format函数和“00”格式将日期的日部分转换为带前导零的格式,以便在必要时添加前导零 格式(日期(myDate),“00”) myDate是包含完整日期值的日期变量 以下宏可用作工作示例 Sub Macro1() Dim myDate As Dat

我想能够使用VBA显示1-24之间的任何数字作为2位数字。显然,唯一有问题的是1-9,我希望显示为01、02、03等。有没有办法执行此操作?

您无法格式化整型变量,您需要使用字符串变量进行格式化

您可以使用
day
函数从日期中提取日数,然后使用
format
函数和
“00”
格式将日期的日部分转换为带前导零的格式,以便在必要时添加前导零

格式(日期(myDate),“00”)

myDate是包含完整日期值的日期变量

以下宏可用作工作示例

Sub Macro1()
    Dim myDate As Date

    myDate = "2015-5-1"

    Dim dayPart  As String

    dayPart = Format(Day(myDate), "00")

    MsgBox dayPart
End Sub
我是这样做的:

number_item = 2
number_item = WorksheetFunction.Text(number_item, "00") 

这将完成此任务。

确保可以格式化整数,只需在format命令中将其转换为字符串:

formattedIntAsString = Format(Cstr(intValue), "00")

我知道它很旧,但为了回答澄清的问题,我会使用内置的日期格式功能

要修改DeanOC的答案:

Sub Macro1()
    Dim dateDate As Date
    Dim strDate  As String
    Dim strDay  As String

    dateDate = "2015-5-1"
    strDate = Format(dateDate, "mm/dd/yy") ' = "05/01/15"
    strDay = Format(dateDate, "dd")        ' = "01"

    MsgBox "The two digit day of """ & strDate & """ is """ & strDay & ""."
End Sub

我需要将其应用于代码中生成的数字,而不是单元格中的数字。这会以相同的方式工作吗?我可以简单地将其更改为MyVar.NumberFormat=“00”吗?我试过了,在MyVar.NumberFormat=“00”行上得到了所需的运行时错误“424”对象如果这有帮助的话,我需要格式化的数字是我从用户表单中提取的日期的日期部分。@ChadPortman我已经根据您的评论修改了我的答案。这应该是你想要的,先生,你是个圣人。谢谢这里有其他的(被接受的)答案提供了OP的问题,它们是几年前发布的。在发布答案时,请确保添加新的解决方案或更好的解释,尤其是在回答旧问题时。在我看来,使用内置格式在单个步骤中从日期变量提取日期是一种新的解决方案。我的方法可以更好地推广。例如,我经常使用“yymmdd”格式,以便日期的字符串表示排序良好。使用前面回答的方法,我需要使用格式(年(日期),“00”)&格式(月(日期),“00”)&格式(日(日期),“00”)。通过我的方法,我可以使用Format(dateDate,“yymmdd”)函数。其他数字类型还有许多其他格式选项。我怀疑我的方法也更快。