Excel 在列中循环,然后执行UCase

Excel 在列中循环,然后执行UCase,excel,vba,Excel,Vba,我有一些代码在列中循环以查找列中的特定结尾(_END)。如果它找到了,那么它将循环该列中的行,更改日期格式。这是预期的工作,我没有任何问题。但是,我也需要使用行。现在,它将输出一个类似“2016年1月1日”的日期。但是,我需要它是“2016年1月1日”。下面的代码给我带来了麻烦 lngColHeaders = Cells(5, Columns.Count).End(xlToLeft).Column For X = 1 To lngColHeaders If (Right(Cells(5,

我有一些代码在列中循环以查找列中的特定结尾(_END)。如果它找到了,那么它将循环该列中的行,更改日期格式。这是预期的工作,我没有任何问题。但是,我也需要使用行。现在,它将输出一个类似“2016年1月1日”的日期。但是,我需要它是“2016年1月1日”。下面的代码给我带来了麻烦

    lngColHeaders = Cells(5, Columns.Count).End(xlToLeft).Column
For X = 1 To lngColHeaders
If (Right(Cells(5, X), 4)) = "_END" Then
    LastRowDates = Cells(Rows.Count, X).End(xlUp).Row
    For ZZ = 6 To LastRowDates Step 1
        Cells(ZZ, X).NumberFormat = "dd-MMM-YYYY"
        UCase (Cells(ZZ, X))
    Next ZZ
End If
Next X

正如我所说,它似乎正确地格式化了它们,但是
UCase(Cells(ZZ,X))
似乎什么都不做。非常感谢您的帮助。

我认为您需要将单元格格式化为文本,然后执行
UCase
,以及
格式

Cells(ZZ, X).NumberFormat = "@"
Cells(ZZ, X).Value = UCase(Format(Cells(ZZ, X).Value, "dd-MMM-YYYY"))

Cells(ZZ,X)=UCase(Cells(ZZ,X))
这不会输出任何不同的内容。可能是因为该值是一个日期(底层只是一个数字)。大写数字不会改变任何东西。我相信这也是问题所在。有什么可能的解决办法吗?我想你需要将单元格格式化为文本,以保留大写月份名称。你真是个天才。这解决了我的问题。非常感谢你!!