2016-03-03 2 views
-1

Я пытаюсь получить цикл do-until, который у меня есть в моем коде, чтобы распознать дату (дата в формате M/DD/YY HH:MM), которая добавляет к ней каждую минуту вокруг цикла а затем завершаться, когда это значение равно второму неизменному значению. Вот что у меня есть:Do-Until Loop Not Recognizing Range Values ​​

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

У вас есть ненужные .Select и ActiveSheet заявления.

Я также обеспокоен тем, что вы используете нотацию 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