VBA:更改日期格式为文本格式

场景:
        
填写年月格式的时候,默认是日期类型的,例如:填写2023-01,默认是2023/1/1,但是想要保持2023-01为文本格式的日期。 


实现方式:  

  1. 手动设置:选择需要设置格式的单元格,右键点击选择“设置单元格格式”,在弹出的对话框中选择“文本”格式即可。

  2. 使用VBA代码设置:在VBA代码中使用NumberFormat属性来设置单元格的格式为文本格式。

 函数相关介绍: 
        在Excel VBA中,NumberFormat函数是用来设置单元格中数字的格式,比如可以设置小数位数、千位分隔符、货币符号等。NumberFormat函数可以被用于任何具有Value属性的对象,例如Range对象。

        NumberFormat函数有很多种不同的格式,可以根据需要选择。下面是一些常用的格式:

  • "General":一般格式,Excel自动选择最合适的格式
  • "0":显示数值,如果数值没有整数部分,则会显示0
  • "0.00":显示数值,保留两位小数
  • "#,##0":显示数值,千位使用逗号分隔
  • "0%":显示百分比,保留两位小数
  • "yyyy-mm-dd":显示日期,格式为年-月-日
  • "@":显示为文本格式

        可以通过以下语法使用NumberFormat函数:

Range.NumberFormat = "格式"

        其中,Range可以是任何具有Value属性的对象,格式可以是任何Excel支持的数字格式。
更改日期为文本格式具体实现:

Sub ExtractCode3()
    Dim lastRow As Long
    lastRow = Cells(Rows.Count, "A").End(xlUp).Row ' 获取A列最后一行行号
    Dim i As Long
    For i = 1 To lastRow
        Dim dateValue As Date
        dateValue = Cells(i, "A").Value ' 获取A列的日期值
        Dim formattedDate As String
        formattedDate = Format(dateValue, "yyyy-mm") ' 将日期格式化为年月
        Cells(i, "A").NumberFormat = "@" ' 将单元格格式设置为文本
        Cells(i, "A").Value = formattedDate ' 将格式化后的年月写入A列
    Next i
End Sub

重要代码解释: 

        NumberFormat = "@"是文本格式,它告诉Excel将单元格中的内容视为文本而不是数字或日期。如果将一个数字或日期格式的值赋给格式为"@"的单元格,则该值将被转换为文本格式。这种格式常用于需要在单元格中显示特殊字符或字符串的情况,例如电话号码、邮政编码或身份证号码等。 

使用前效果图: 

VBA:更改日期格式为文本格式_第1张图片

 使用后效果图: 

VBA:更改日期格式为文本格式_第2张图片

 总结:
        通过将单元格的格式设置为文本格式,可以确保Excel不会将其中的数值或日期自动转换为其他格式,保留原始的字符串显示。此外,文本格式还适用于需要显示特殊字符或字符串的情况,例如电话号码、邮政编码或身份证号码等。

你可能感兴趣的:(ExcelVBA,excel,开发语言)