2013-12-17 105 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