Excel 填充单元格并设置最新格式->;日期显示错误
我用不同的日期填充了许多单元格。例如:Excel 填充单元格并设置最新格式->;日期显示错误,excel,vba,Excel,Vba,我用不同的日期填充了许多单元格。例如: 01.01.2020 01.02.2020 2020年3月1日 2020年4月1日 2020年5月1日 等等。。(每月一份) 用vba宏填充这些单元格后,我想将格式更改为短月份描述(“一月”、“二月”、“三月”等) 所以我用vba将格式改为“MMM”,但格式对单元格没有影响。我必须用“F2”键进入单元格,然后单元格将其格式更改为“一月、二月等…” 如何确保在更改格式后直接更改单元格值?您的单元格可能不包含日期,而是包含一个看起来像日期的字符串。将单元格
- 01.01.2020
- 01.02.2020
- 2020年3月1日
- 2020年4月1日
- 2020年5月1日
- 等等。。(每月一份)
如何确保在更改格式后直接更改单元格值?您的单元格可能不包含日期,而是包含一个看起来像日期的字符串。将单元格格式化为包含字符串的日期不会自动将内容转换为日期。由于单元格内容与数字格式不匹配,因此将忽略格式设置 如果您输入单元格,它将显示Excel,就像您正在编辑内容一样。离开单元格时,Excel会尝试理解您键入的内容。由于单元格格式设置为日期格式,Excel假定字符串
01.01.2020
为日期,并将其转换为日期。之后,可以应用数字格式,单元格显示为“Jan”
因此,您可能必须通过写入实际日期来更改填充单元格的宏
Dim d As Date, row As Long
d = DateSerial(2020, 1, 1)
For row = 1 To 12
With ActiveSheet.Cells(row, 1)
.Value = d
.NumberFormat = "MMM"
End With
d = DateAdd("m", 1, d)
Next
顺便说一句:要检查单元格是否包含字符串、日期或数字,请在即时窗口中键入:
? vartype(activecell.Value)
5
=numeric,7
=date,8
=string以下是输入和格式化日期的简单方法。看看这是否有用
逻辑:
Option Explicit
Sub Sample()
Dim ws As Worksheet
Set ws = Sheet1 '<~~ Change this to relevant sheet
With ws
.Range("A1").Formula = "=DATE(2020,1,1)"
.Range("A2:A12").Formula = "=EDATE(A1, 1)"
'~~> Optional
.Range("A1:A12").Value = .Range("A1:A12").Value
'~~> Format entire range in one go
.Range("A1:A12").NumberFormat = "MMM"
End With
End Sub
A1中输入开始日期
Edate
Option Explicit
Sub Sample()
Dim ws As Worksheet
Set ws = Sheet1 '<~~ Change this to relevant sheet
With ws
.Range("A1").Formula = "=DATE(2020,1,1)"
.Range("A2:A12").Formula = "=EDATE(A1, 1)"
'~~> Optional
.Range("A1:A12").Value = .Range("A1:A12").Value
'~~> Format entire range in one go
.Range("A1:A12").NumberFormat = "MMM"
End With
End Sub
选项显式
子样本()
将ws设置为工作表
设置ws=Sheet1'一次性格式化整个范围
.Range(“A1:A12”).NumberFormat=“MMM”
以
端接头
您是如何更改格式的?显示您使用的VBA代码将很有帮助。理论上,如果你有一个范围,比如说,rng
,为了做你需要的事情,使用rng.NumberFormat=“MMM”
就足够了。