【发布时间】:2017-07-20 02:39:16
【问题描述】:
我的数据提供者更改了我获得的 .XLSX 文件中的几处内容。我添加了一个新的 sub 来根据此应用程序期望的模型修复数据:
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 列的标题行值为“已处理日期”,H2 单元格及其下方的单元格存储为“常规”,其值类似于 2016 年 11 月 15 日。我需要将所有日期更改为 dd-mmm-yyyy 的自定义日期。以下语句无法为我完成此操作:
ActiveSheet.Range("H2").End(xlDown).NumberFormat = "dd-mmm-yyyy"
编辑(2017 年 3 月 1 日):
感谢下面@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
编辑(2017 年 3 月 2 日):
我昨天犯了一个错误。在调试中,我必须在断点处在工作表中选择了一个好的单元格;因此,引用 ActiveCell.Text “有点工作”。它的效果是在 H 列的每一行(第一行除外)中将文本复制为“2016 年 10 月 14 日”。这是最低限度可以接受的。
我真正需要的是一个语句,它将获取 H 列所有行的文本并将存储的值从显示为 10/14/2016 更改为 14-Oct-2016 等。仅更改是不够的要自定义的格式。我也需要更改存储的值。我不知道该怎么做。
【问题讨论】: