在Excel VBA中将NumberFormat Date应用于头等于“Date”的整个列

我想将一个TableStyle应用到一个导入的表,但显然TableStyle不能覆盖当前现有的格式。 但是,当我使用.ClearFormats,它也将清除“date”列的NumberFormat。

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

所以在这个问题上:我怎样才能select一个范围/select,其中标题名称等于“date”,并将NumberFormat“dd-mm-yyyy”应用于整个列。 (PS。我无法对列号进行硬编码,因为date可能位于下一个导入工作表的不同列中。)

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

第一条语句在标题行中获取标签“Date”。 第二个date格式设置为该列的使用部分。

严格回答你的问题:

 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