使用excel vba将单元格值格式化为“MMMM”

我有下面的代码,我需要一些帮助修改。

Sub CopyDataBasedOnTimeRangeMonth() Dim i, LastRow Dim Cell As Range LastRow = Sheets("OPA").Range("A" & Rows.Count).End(xlUp).Row Sheets("Sheet2").Range("A3:U500").ClearContents For i = 2 To LastRow If Sheets("OPA").Cells(i, "G").Value >= Range("U1") And Sheets("OPA").Cells(i, "G").Value < Range("AC1") Then Sheets("OPA").Cells(i, "R").EntireRow.Copy Destination:=Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Offset(1) End If Next i End Sub 

对于“G”的计算,我想使用正在计算的值的“MMMM”格式。 在一个Excel的公式中,我可以使用文本(“G12”,“MMMM”),然后继续公式,但我不知道如何修改关于代码只是使用“月”唯一值“G”。

预先感谢您提供的任何帮助。

你可以在下面看到你的代码的变体,它已经使用Davesexcel (+1)提供的变体进行了更新,还有一些来自我身边的修正,只是为了简化可读性:

1)绝对引用Range()replace为[]速记方法;
2)删除Destination:=过度,目的地范围也被行取代,因为当你复制行时,目的地应该是行;
3)应用with (object)方法;
4)增加variables的types,例如, ii&取代(意味着i as long

 Sub CopyDataBasedOnTimeRangeMonth() Dim i&, LastRow&, Cl As Range LastRow = Sheets("OPA").Range("A" & Rows.Count).End(xlUp).Row Sheets("Sheet2").[A3:U500].ClearContents With Sheets("OPA") For i = 2 To LastRow If Month(.Cells(i, "G")) >= Month(.[U1]) And _ Month(.Cells(i, "G")) < Month(.[AC1]) Then .Rows(i).Copy Sheets("Sheet2").Rows(Sheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row + 1) End If Next i End With End Sub 

testing,工作正常。

资源:

在这里输入图像说明

目的地:

在这里输入图像说明

最好是以[U1]作为date,然后格式化为月份

If Month(Sheets("OPA").Cells(i, "G")) >= Month(Range("U1"))