【问题标题】:Formatting a number to two digits even if the first is a 0 vba即使第一个数字是 0 vba,也将数字格式化为两位数
【发布时间】:2015-01-19 01:08:57
【问题描述】:

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

【问题讨论】:

    标签: excel vba formatting string-formatting


    【解决方案1】:

    不能格式化整型变量,需要用字符串变量格式化。

    您可以使用Day 函数从日期中提取日期数,然后使用Format 函数和"00" 格式将日期的日期部分转换为带有前导零的格式必要时前导零

    格式(Day(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
    

    【讨论】:

    • 我需要将此应用于代码中生成的数字,而不是单元格中的数字,这会以同样的方式工作吗?我可以简单地将其更改为 MyVar.NumberFormat = "00"
    • 好吧,我试过了,我在 MyVar.NumberFormat = "00" 行上得到了 Run-Time Error '424' Object Required
    • 如果这有帮助,我需要格式化的数字是我从通过用户表单提供的日期中提取的日期的日期部分。
    • @ChadPortman 我已经根据您的 cmets 修改了我的答案。这应该是你所追求的。
    • 您先生是圣人。谢谢
    【解决方案2】:

    当然你可以格式化一个整数,你只需在格式化命令中将它转换为字符串:

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

    【讨论】:

      【解决方案3】:

      我是这样做的:

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

      这样就可以了。

      【讨论】:

        【解决方案4】:

        我知道它已经过时了,但是,为了澄清这个问题,我会使用内置的日期格式化功能。

        修改 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
        

        【讨论】:

        • 还有其他(接受的)答案提供了 OP 的问题,它们是几年前发布的。发布答案 see: How do I write a good answer? 时,请确保添加新的解决方案或更好的解释,尤其是在回答较老的问题时。
        • 在我看来,使用内置格式从日期变量中一步提取日期是一种新的解决方案。我的方法可以更好地概括。例如,我经常使用“yymmdd”格式,以便日期的字符串表示排序良好。使用先前响应的方法,我需要使用 Format(Year(dateDate),"00") & Format(Month(dateDate),"00") & Format(Day(dateDate),"00")。通过我的方法,我可以使用 Format(dateDate,"yymmdd") 函数。其他数字类型还有许多其他格式选项。我怀疑我的方法也更快。
        猜你喜欢
        • 2020-10-12
        • 2011-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-23
        • 1970-01-01
        • 1970-01-01
        • 2011-07-21
        相关资源
        最近更新 更多