2016-04-14 48 views
0

我想重置我的Excel表的格式,問題是我有4列應該是日期格式。如何找到標題中包含「DATE」的所有列(如:最後加工日期,裝配日期,訂單日期等),並將此格式更改爲最新?注意:需要動態,因爲它將來可能會從C:C更改爲E:E或添加更多列。每次excel格式列與VBA日期格式

Set lo = ws.ListObjects("FilterParts") 
For Each dataColumn In lo.ListColumns 
    If InStr(dataColumn.Name, "Date") > 0 Then 
     dataColumn.DataBodyRange.NumberFormat = "dd/mm/yyyy" 
    End If 
Next dataColumn 

運行此宏,添加新列:

Sub formatTable(ws As Worksheet) 
    On Error Resume Next 
    Dim lo As ListObject 
    Set lo = ws.ListObjects("FilterParts") 

    'Format the table 
    ws.UsedRange.Font.Bold = False 
    ws.UsedRange.Style = "Normal" 

    lo.TableStyle = "TableStyleMedium9" 
    'Format every column that has "DATE" in its header to a date column 
    'ws.Range("C:C").NumberFormat = "dd/mm/yyyy" and so on 


End Sub 
+0

恰恰是標題行中的什麼?他們是否都包含「日期」一詞?或者也許標題行中的所有日期都包含「/」? – Will

+0

標題位於第2行,標題行看起來像這樣(標有),ID,最後加工日期,繪圖編號,估計時間,PDF,TXT ..... – skatun

回答

1

通過你的列這樣就迭代,檢查它們的名字包含"Date",如果是,則對其進行格式化。

0
Dim HdrRow as range 
Dim Cl as Range 
Set HdrRow = ActiveSheet.UsedRange 
Set HdrRow = HdrRow.Row(1) 'assuming row 1 of the data contains headers 

For Each Cl In HdrRow.cells 
    If Instr(lCase(Cl.Value), "date") > 0 then 'This column has "date" in the header text 
enter code here 
Next Cl 
從這裏

您可以存儲供以後循環或循環在此列馬上細胞中的細胞/列數....

這應該讓你開始只是回來後,如果您需要更多的幫助。

1

較長的編碼選項,但使用Find來避免在範圍內循環。

Dim ws As Worksheet 
Dim lo As ListObject 
Dim rng1 As Range 
Dim StrAddress As String 

Set ws = ActiveSheet 
Set lo = ws.ListObjects("FilterParts") 

Set rng1 = lo.Range.Rows(1).Find("Date", , , xlPart) 

If Not rng1 Is Nothing Then 
    StrAddress = rng1.Address 
    rng1.Offset(1, 0).Resize(lo.ListRows.Count, 1).NumberFormat = "dd/mm/yyyy" 
    Do 
    Set rng1 = lo.Range.Rows(1).Find("Date", rng1, , xlPart) 
    rng1.Offset(1, 0).Resize(lo.ListRows.Count, 1).NumberFormat = "dd/mm/yyyy" 
    Loop While StrAddress <> rng1.Address 
End If 
-1

嘗試:

Range("A1","A50000").NumberFormat = "dd\/mm\/yyyy"