Excel VBA - 将日期转换为以 MMM YYYY 格式显示的文本

Excel VBA - Convert date to display as text in the form MMM YYYY

我想将 A 列或 A 范围从日期格式转换为显示为文本格式 MMM YYYY.

这是工作表布局:


但是,我 运行 代码没有发生任何变化:

Sub CONVERT_DATE()

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Workbooks.Open ("MyWorkbook.xlsx")
Workbooks("MyWorkbook.xlsx").Activate

Dim ws As Worksheet
Set ws = Workbooks("MyWorkbook.xlsx").Sheets("MyWorkSheet")

Dim wsLastRow As Long
wsLastRow = ws.Range("A" & Rows.Count).End(xlUp).Row

'Convert date to display as text in the format mmm yyyy

ws.Range("A2:A" & wsLastRow).Text = Format(ws.Range("A2:A" & wsLastRow).Text, "mmm yyyy")

Workbooks("MyWorkbook.xlsx").Close SaveChanges:=True

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub

任何人都可以发现问题吗?

非常感谢!

使用 NumberFormat 而不是尝试设置 Text

Sub CONVERT_DATE()

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Workbooks.Open ("MyWorkbook.xlsx")
Workbooks("MyWorkbook.xlsx").Activate

Dim ws As Worksheet
Set ws = Workbooks("MyWorkbook.xlsx").Sheets("MyWorkSheet")

Dim wsLastRow As Long
wsLastRow = ws.Range("A" & Rows.Count).End(xlUp).Row

'Convert date to display as text in the format mmm yyyy

' change this line
ws.Range("A2:A" & wsLastRow).NumberFormat = "mmm yyyy"

Workbooks("MyWorkbook.xlsx").Close SaveChanges:=True

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub

而不是这一行

ws.Range("A2:A" & wsLastRow).Text = Format(ws.Range("A2:A" & wsLastRow).Text, "mmm yyyy")

使用NumberFormat更改范围的格式

ws.Range("A2:A" & wsLastRow).NumberFormat = "mmm yyyy"