我的数据提供程序在我得到的.XLSX文件中更改了一些内容。我添加了一个新的子根据该应用程序所期望的模型来修正数据:VBA Excel加载项:将列从一般格式更改为自定义日期的代码
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
一切正常,但根据上述1号线的结果。在活动工作表中,H列的标题行值为“Processed Date”,H2单元格及其下面的单元格存储为常规值,例如11/15/2016。我需要将所有日期更改为自定义日期,格式为dd-mmm-yyyy。下面的语句未能得到这为我做的:
ActiveSheet.Range("H2").End(xlDown).NumberFormat = "dd-mmm-yyyy"
EDIT(01March2017):
多亏了答案从下面@Jeeped,我增加了一个声明,这是是代码溶液:
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
EDIT(02March2017):
我由昨天错误。在调试中,我必须在工作表中选择一个好的单元格作为断点;因此,引用ActiveCell.Text“工作种类”。它的效果是在列H的每一行(第一行除外)中复制Text为“2016年10月14日”。这是微不足道的。
我真正需要的是一种声明,它将采用列H的所有行的文本并将存储的值从显示为2016年10月14日更改为2016年10月14日等等。仅仅是这样将格式更改为自定义。我也需要更改存储的值。我不知道该怎么做。
请参阅[如何避免在Excel VBA宏中使用选择](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros)。 – Jeeped