VBA Excel加载项:用于将列的格式从常规更改为自定义date的代码

我的数据提供者已经改变了我得到的.XLSX文件中的几件事情。 我已经添加了一个新的子按照这个应用程序预期的模型修复数据:

Sub Feb27FixModel() ActiveSheet.Range("H2").End(xlDown).NumberFormat = "dd-mmm-yyyy" 'change format of Processed Date Dim colNum As Integer colNum = ActiveSheet.Rows(1).Find(what:="Legacy code", lookat:=xlWhole).Column ' Done twice to insert 2 new cols ActiveSheet.Columns(colNum + 1).Insert ActiveSheet.Columns(colNum + 1).Insert ' New col headings ActiveSheet.Cells(1, colNum + 1).Value = "Origin Code" ActiveSheet.Cells(1, colNum + 2).Value = "Jurisdiction Code" Range("A1").Select ActiveCell.FormulaR1C1 = "County Name" Range("B1").Select ActiveCell.FormulaR1C1 = "State Abbreviation" ActiveWorkbook.Save End Sub 

一切工作,除了上面的第一行的结果。 在活动工作表中,列H的标题行值为“处理date”,H2单元格及其下面的单元格存储为常规值,例如11/15/2016。 我需要将所有date更改为自定义date为dd-mmm-yyyy。 以下声明未能为我完成这件事:

 ActiveSheet.Range("H2").End(xlDown).NumberFormat = "dd-mmm-yyyy" 

编辑(01March2017):

感谢下面@Jeeped的回答,我添加了另一个声明,这是解决scheme的代码:

 With ActiveSheet .Range(.Cells(2, "H"), .Cells(.Rows.Count, "H").End(xlUp)).NumberFormat = "dd-mmm-yyyy" .Range(.Cells(2, "H"), .Cells(.Rows.Count, "H").End(xlUp)).Value = ActiveCell.Text End With 

编辑(02March2017):

我昨天犯了一个错误。 在debugging中,我必须在工作表中select一个好的单元格作为断点; 因此,引用ActiveCell.Text“工作sorting”。 它的效果是在列H的每一行(第一行除外)中复制文本为“2016年10月14日”。 这是微不足道的。

我真正需要的是一个声明,将H列的所有行的文本,并将存储的值从显示为10/14/2016更改为2016年10月14日,等等。只是将格式更改为定制。 我也需要更改存储的值。 我不知道该怎么做。

您只在最后一个单元格上操作H列中的值。从H2到最后一个单元格的范围,以设置所有单元格的格式。

 with ActiveSheet .Range(.cells(2, "H"), .cells(.rows.count, "H").End(xlUp)).NumberFormat = "dd-mmm-yyyy" end with 

这四线循环应该做的伎俩。 testing它。 ;)

 For i = 2 To Columns("H").End(xlDown).Row 'from row nr 2 to the rownr of last cell of column H Set currentCell = Cells(i, "h") currentCell.Value = Format(currentCell.Value, "dd-mm-yyyy") Next i 

它漫步每个单元格,并对其应用Format()函数来转换文本格式。 让我知道如果有帮助。