将NumberFormat日期应用于整个列,其中标题等于"日期"在Excel VBA中

时间:2016-12-24 01:02:04

标签: excel vba excel-vba date

我想将TableStyle应用于导入的表,但显然TableStyle不能覆盖当前存在的格式。但是当我使用.ClearFormats时,它也会清除" Date"列。

所以我决定做一个解决方法并使用.ClearFormats,但之后重新应用Date NumberFormat。我面临的唯一问题是"日期"中有一个空单元格的行。列,这使我无法使用.End(xlDown)。

关于这个问题: 如何选择标题名称等于"日期"并应用NumberFormat" dd-mm-yyyy"到整个专栏。 (PS。我无法对列号进行硬编码,因为日期可能位于下一个导入工作表的不同列中。)

2 个答案:

答案 0 :(得分:2)

colDate = Application.Match("Date", Rows(1), 0) '<-- Assuming your header is at row 1
Columns(colDate).NumberFormat = "dd-mm-yyyy"

第一个语句获取标签&#34; Date&#34;在标题行中。第二个将Date格式设置为该列的已使用部分。

答案 1 :(得分:0)

严格回答你的问题:

With Rows(1).Find(what:="Date", LookIn:=xlValues, lookat:=xlWhole) '<--| change "1" to your actual header row index
    .Parent.Range(.Cells, .Parent.Cells(.Parent.Rows.count, .Column).End(xlUp)).NumberFormat = "dd-mm-yyyy"
End With

如果您不想依赖ActiveSheet

With Worksheets("myTableWorksheetName").Rows(1).Find(what:="Date", LookIn:=xlValues, lookat:=xlWhole) '<--| change "myTableWorksheetName" to your actual sheet name and "1" to your actual header row index
    .Parent.Range(.Cells, .Parent.Cells(.Parent.Rows.count, .Column).End(xlUp)).NumberFormat = "dd-mm-yyyy"
End With