2016-03-03 53 views
-1

我試圖獲得在我的代碼中識別日期(日期格式爲M/DD/YY HH:MM)的do-until循環,每次在循環中添加一分鐘然後在該值等於第二個不變的值時終止。以下是我有:被比較Do-Until循環無法識別範圍值

Do 
    Range("A9").Select 
    Selection.Copy 
    Range("A1").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Range("B1").Select 
    Application.CutCopyMode = False 
    ActiveCell.FormulaR1C1 = "=R1C1+R1C72" 
    Range("B1").Select 
    Selection.Copy 
    Range("A9").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Range("A9").Select 
Loop Until ActiveCell.value = Range("RC74").value 

This is a photo of what my sheet looks like with the data removed in the middle.

兩個細胞BW9和A9。對不起,我不是很具體。專業粘貼是爲了防止使用第三方軟件的小故障。

+1

據我所知,A9中的值始終是相同的。 B1中的公式變成了'= C2 + BV2',因爲這兩個單元在循環中都沒有變化,所以B1總是相同的,A9也是如此。因此,如果它不等於RC74(不能分辨是否意味着實際的單元RC74,或者如果這是嘗試使用R1C1格式,不能這樣做)第一個循環將永遠持續循環。 –

+0

什麼不起作用? –

+1

我打賭它被使用'.Select'和'ActiveCell'阻礙了。嘗試改爲直接處理數據。閱讀[如何避免'.Select'](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros)瞭解一些提示。我強烈建議這樣做。如果您可以在此循環之外發布代碼,我們也可以提供幫助。 – BruceWayne

回答

1

您有一堆不必要的.SelectActiveSheet陳述。

我還擔心您以不打算的方式使用R1C1表示法。

請嘗試下面的代碼並根據需要調整R1C1表示法,因爲很難確切地說出您指的是哪些單元格。

Range("B1").FormulaR1C1 = "=RC[-1]+RC[72]" 'this makes B1 = A1+BU72 .. (72 columns from B) change as needed 

Do 

    Range("A1").Value = Range("A9").Value 
    Range("B1").Calculate 
    Range("A9").Value = Range("B1").Value 

Loop Until Range("A9").Value >= Range("BW9").Value 
+0

這是正確的單元格名稱(請參閱上面的圖片鏈接),但我無法獲得此公式的工作。 – jmcole

+0

@jmcole - **我無法得到這個公式** - 你能更具體嗎......另外,我剛剛看到你對原始問題的其他評論,請看我的編輯 –

+0

除了設置A1的初始步驟之外和A9相等,循環拒絕循環成功,系統掛起而不是進一步增加A9的值1分鐘。我最初嘗試使用另一個代碼(將附加到我的原始)這個問題,但一旦代碼進入循環,機器沒有響應。 – jmcole