2012-02-22 77 views
0

我的報價生成器創建一個Excel文檔,我想在其上運行一個宏來保留它的計算。出於某種原因,它說'數字存儲爲文本'時有數字。我如何將它們改爲使用宏的數字格式?我發現如果我在配方欄中單擊一次,問題也解決了。Excel VBA - 一個字段的值爲

下面的代碼是我現在的代碼,但它不會解決錯誤。

Range("A1:A" & LastRow).Select 
Selection.NumberFormat = "0" 

A列包含金額(1,2,3等)。我有另一列有同樣的問題,但它包含一個歐元貨幣,並有2個小數位。

Range("I1:I" & LastRow).Select 
Selection.NumberFormat = "0.00" 

enter image description here

感謝您的幫助! :)

對Siddharth誰幫我完成這個完整的問題額外喊。

+0

的可能重複[Excel中:如何強制電池評價](http://superuser.com/questions/299437/excel-how-to-force-cell-evaluation) – GSerg 2012-02-22 09:33:10

+0

去嘗試你Serg線程,我沒有發現,當我瀏覽可能的解決方案。 – CustomX 2012-02-22 09:37:45

+0

似乎不適合我。 – CustomX 2012-02-22 09:44:47

回答

2

湯姆,

有3種方法來解決這個

)返回到你的報價產生,看看它是如何將數據保存到Excel工作表,並修改代碼有

手動:突出顯示區域,點擊感嘆號旁邊的綠色特里安GLE並單擊 「轉換爲數字」 見快照

enter image description here

)使用此代碼。

Sub Sample() 
Dim LastRow As Long, i As Long 

LastRow = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row 

Sheets("Sheet1").Range("A1:A" & LastRow).NumberFormat = "0" 

For i = 1 To LastRow 
    If Val(Sheets("Sheet1").Range("A" & i).Value) <> 0 Then _ 
    Sheets("Sheet1").Range("A" & i).Formula = _ 
    Val(Sheets("Sheet1").Range("A" & i).Value) 
Next i 

Dim temp As Double 

LastRow = Sheets("Sheet1").Range("I" & Rows.Count).End(xlUp).Row 

Sheets("Sheet1").Range("I1:I" & LastRow).NumberFormat = "\$#,##0.00" 

For i = 1 To LastRow 
    If Val(Sheets("Sheet1").Range("I" & i).Value) <> 0 Then 
    temp = Sheets("Sheet1").Range("I" & i).Value 
    Sheets("Sheet1").Range("I" & i).ClearContents 
    Sheets("Sheet1").Range("I" & i).Value = temp 
    End If 
Next i 
End Sub 

UP

FOLLOW之前和連接

enter image description here

更多跟進(重要)快照後

如果你有不同的區域設置,那麼你將必須小心o適當地調整它們。

例如荷蘭比利時你必須使用「,」爲小數。請看快照。

enter image description here

+0

不,我不是複製和粘貼。我正在做你手動做的事情。 「我發現如果我在配方欄中單擊一次,問題也解決了。」試試代碼。我測試了它:) – 2012-02-22 09:51:37

+0

@Tom:上傳了一個快照。 「檢查後續」 – 2012-02-22 09:57:43

+0

@Tom:您將不得不修改範圍。我的代碼示例只考慮了Col A :)你可以發佈一個快照,看你的數據是怎麼樣的嗎? – 2012-02-22 10:03:16

2

試試這個不同的方式: -

路1

Selection.NumberFormat = "General" 

路2

vStr = "1000.5" 

intNum = CInt(vStr) 

路3

使用VBA將文本轉換爲數字 如果您經常將文本轉換爲數字,則可以使用宏。 將按鈕添加到現有工具欄,並將該宏附加到該按鈕。然後,選擇單元格,然後單擊工具欄按鈕。

Sub ConvertToNumbers() 
    Cells.SpecialCells(xlCellTypeLastCell) _ 
    .Offset(1, 1).Copy 
    Selection.PasteSpecial Paste:=xlPasteValues, _ 
    Operation:=xlPasteSpecialOperationAdd 
    With Selection 
    .VerticalAlignment = xlTop 
    .WrapText = False 
    End With 
    Selection.EntireColumn.AutoFit 
End Sub 
+0

因此,如果我將Way 3添加到我的宏,它也應該這樣做? – CustomX 2012-02-22 09:33:55

+0

我認爲,應該。 – 2012-02-22 09:38:09

+0

@Siva Charan:Siva認爲代碼不會解決問題。發佈前你有沒有試過你的代碼? :) – 2012-02-22 09:49:37

相關問題