2012-12-28 57 views
0

我在這裏做的是將存儲爲文本的字符串轉換爲整數。不幸的是,只是將格式從普通格式改爲數字格式並不能解決問題,而我以前的做法是手動查找/替換每個單獨的數字(即使用excel find替換爲0,1,2,3等)For循環在VBA行爲不當,而且沒有按照我想要的方式運行

我對下面的代碼有問題,它只會替換一些數字,但不是全部。我甚至無法弄清楚它所做的一套模式。據我可以告訴for語句應該從0到9的每個「Digit」值運行它?那麼爲什麼它不替換所有的字符串呢?

Dim Digit As Integer 
Dim ReplacementRange As Range 

Set ReplacementRange = Range("Table1[AR]")` 

Digit = 0 


For Digit = 0 To Digit = 9 

    ReplacementRange.Replace What:=Digit, Replacement:=Digit, LookAt:=xlPart, _ 
     SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
     ReplaceFormat:=False   
    Digit = Digit + 1 

Next 
+3

您正在將以文本形式存儲的數字轉換爲數字嗎?爲什麼不運行'ReplacementRange.value = ReplacementRange.value'。 –

+0

嘗試在數字文本字符串上使用工作表值函數並將值複製回單元格? – chuff

+0

因爲我是個白癡......感謝你。我打算把我的頭撞到一堵牆上。你雖然做了我的一天。謝謝! – JakeMWP

回答

7

要快速轉換範圍內它們的數值內存儲爲文本的數字,你可以簡單地將值代入範圍,像這樣:

ReplacementRange.value = ReplacementRange.value


編輯:我有時間,所以我想我會添加什麼是你在旁邊做什麼是一個簡單的解決方案,而不是一個複雜的替代: p結構錯誤。正確的最小語法是[variable] = [startValue] to [endValue]例如:For x = 0 to 1

For Digit = 0 To Digit = 9最終被評估等同於For Digit = 0 to 0(因爲您之前設置數字爲0。這意味着循環永遠只能運行爲Digit = 0的值。你也內環路增加數字,這是更合理的處理。增加的步驟。在這種情況下,你想打每一個數字,所以你不應該增加值

要解決你的循環,你需要做到以下幾點:

For Digit = 0 To 9 
    ReplacementRange.Replace What:=Digit, Replacement:=Digit, LookAt:=xlPart, _ 
     SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
     ReplaceFormat:=False   
Next 

但是...這仍然不能解決以文字形式存儲的號碼的問題

+0

工作出色,我覺得自己像個白癡。爲了解釋爲什麼我這樣做,他們以我自己的方式嘗試 - 自動化前面的人做的事,而不是思考。丹尼爾非常感謝! – JakeMWP

+1

如果您不知道,您可以點擊旁邊的複選標記接受Daniel的答案,將其變成愉快的綠色陰影。 –

+0

我不知道 - 我修正了這個問題。謝謝道格! – JakeMWP