2016-12-24 51 views
1

我想將TableStyle應用於導入的表格,但顯然TableStyle無法覆蓋當前現有的格式。但是,當我使用.ClearFormats時,它也將清除「日期」列的NumberFormat。將Excel格式的日期應用於整個列,其中標題等於Excel中的「Date」VBA

因此,我決定做一個解決方法並使用.ClearFormats,但之後重新應用Date NumberFormat。我面臨的唯一問題是,在「日期」列中存在具有空單元格的行,這使我無法使用.End(xlDown)。

回到問題: 如何選擇標題名稱等於「Date」並將NumberFormat「dd-mm-yyyy」應用於整列的範圍/選區。 (PS。我不能硬編碼列數,因爲日期可能是在爲下進口板材的不同列。)

+0

如果使用表功能,您可以用'的ListObject(指數)。 ListColumns(index)'來引用該列。或者你可以使用表單底部的'.End(xlUp)'。 –

回答

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

第一條語句獲取的標題行中的標籤「日期」。第二個將日期格式設置爲該列的已用部分。

+0

@ YowE3K我刪除了與usedRange相關的所有內容,實際上我意識到它沒有任何意義。目標是格式化所有列(以申請新值),同時,OP必須將其應用於工作表中標題的實際行上。感謝您的意見。 –

+0

這完美的作品!非常感謝,節日快樂! –

+0

@DavyHeutmekers不客氣,祝你一樣:) –

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