2013-06-25 53 views
0

我目前遇到了我的代碼問題,我無法找到適當的解決方案。 此代碼的輸入是8760註冊表中的值來自它。 例如,在B列中,有8760個值與一年中的小時數相對應,在它前面我有每小時的值。 因爲我想在每15分鐘有這個值,我需要將值除以4並粘貼它。 所以我在B列的小時,在列C的價值,我想在D列的價值除以4,所以我將有8760 * 4註冊。MS Excel在運行VBA代碼時崩潰

Option Explicit 
Sub test() 

Dim i, j As Long 
Dim valor As Long 


For j = 0 To 8759 
    For i = 1 To 4 
     valor = Range("C" & 3 + j).Value 
     Range("B" & 3 + j).Select 
     Selection.Copy 
     Range("H" & 3 + i + j * 4).Select 
     ActiveSheet.Paste 
     Range("I" & 3 + i + j * 4) = valor/4 
    Next 
Next 

End Sub 

它在一段時間後崩潰了我的程序。它運行正常,直到崩潰。

+0

我認爲你需要消除所有'Select','Selection'等'活動...... stuff'通常減慢和降低效率。因此,它似乎是一段時間後宏崩潰...你應該找到[這個鏈接非常有用](http://stackoverflow.com/a/10717999/2143262) –

+1

你應該看看做這個不同。根據你在做什麼,我認爲你可以用公式來做。另外,如果它沒有崩潰,那麼一旦'j> = 8191' –

回答

1

正如KazJaw說...嘗試:

Range("B" & 3 + j).Copy Destination:= Range("H" & 3 + i + j * 4) 
+0

+1,代碼就會在'3 + i + j * 4'的每次迭代中拋出一個錯誤。一行代碼而不是4行代碼:)根據OP的要求,相同的方法可以使用'.Copy'而不是'.Cut'。 –