2013-12-17 157 views
1

我想通過使用此VBA代碼將excel文件列格式從「Currency」更改爲「Text」,但它不會更改!Excel VBA Cant'從單元格中刪除貨幣格式

Private Sub Sample() 
    Dim ws As Worksheet 
    Dim LastRow As Long, Header As Long 

    Header = 2  '<~~ Start row for formatting 
    LastRow = 1000 '<~~ Last Row 

    Set ws = ThisWorkbook.Sheets("Sheet1") 

    With ws 
     With .Range("C" & Header & ":C" & LastRow) 
      ' 
      '~~> Change format here 
      ' 
      '~~> Number with 5 decimal places. 
      .NumberFormat = "@" 
     End With 
    End With 
End Sub 

我也嘗試了新的空(普通)列其工作,但不是C.請讓我讓你知道,甚至當我嘗試插入一個新列Excel會自動與貨幣格式插入它!有沒有其他的設置可能會影響到這一點? 你能告訴我如何解決這個問題嗎?

感謝

更新: 我也試過這個代碼沒有工作!

Sub Clear_Cell_Backgroud() 

    Dim ws As Worksheet 
    ActiveSheet.UsedRange.Columns("C").NumberFormat = "General" 
    For Each ws In Worksheets 
     Cells.Interior.ColorIndex = xlNone 
    Next ws 

End Sub 
+0

第一個代碼工作爲我工作。你面臨什麼問題? –

+0

嗨Siddharth,我不知道什麼原因,我們recive的Excel文件自動格式化所有新插入的Cols到貨幣! – user1760110

+0

我可以使用您的代碼將新插入的EMPTY cols更改爲文本 – user1760110

回答

1

您的代碼適用於我。確保您有工作表名稱正確的

Set ws = ThisWorkbook.Sheets("Sheet1") 

另外,在你的第二個代碼,當你說Activesheet,確保它是相關的片材是有效的。

或者避免使用ActiveSheet,並按照您在第一個代碼中所做的操作。聲明一個對象並使用它。

如果您正在使用多個工作表,然後你的第二個代碼可以寫成

Sub Clear_Cell_Backgroud() 
    Dim ws As Worksheet 

    For Each ws In Worksheets 
     ws.Columns(3).NumberFormat = "General" 
     ws.Cells.Interior.ColorIndex = xlNone 
    Next ws 
End Sub 
+0

再次感謝VBA Rock! – user1760110