2014-02-12 3 views
-1

У меня есть следующий код, и я стараюсь в основном собирать данные и находить эти данные в ячейке, начиная с A1 до A100 данные поступают из соты M4 Эта конкретная ячейка динамична и постоянно изменение его значения, вытягивание данных с DDE код работает, но по какой-то причине он принимает первое значение и не обновляется по мере изменения M4.Vb excel loop не обновляется

Любые идеи?

Sub looptest() 

Dim loop_ctr As Integer 

For loop_ctr = 1 To 100 

ActiveSheet.Range("A" & loop_ctr).Value = Worksheets("sheet1").Range("M4") 

Application.Wait (Now + TimeValue("0:00:01")) 

Next loop_ctr 

MsgBox " Done! " 

End Sub 
+0

Как меняется значение «M4»? Вы уверены, что значение «M4» действительно меняется? – ARich

+0

Ваша петля, когда я читаю ее, циклически проходит через «A1» до «A100» и изменяет значение этих ячеек, чтобы она соответствовала значению 'M4'. Возможно, чтобы каждый цикл «M4» менялся, вы можете вызвать его из события изменения листа. Но это может вызвать некоторые проблемы. Кроме того, я не понимаю необходимости в команде 'Wait', можете ли вы объяснить это? – guitarthrower

+0

во время выполнения ваш макрос оценивает текущее значение 'M4', а не значение, которое будет при его обновлении. так что это не сработает. да, вы можете настроить событие, которое будет срабатывать, когда значение в 'M4' будет обновлено, как указано в @guitartrower. – L42

ответ

0

После Application.Wait ... линии попробуйте добавить:

DoEvents 

Как написано, вы код не выставляет Excel для любых других системных событий, как ваш DDE, чтобы обновить приложение Excel для всего 100 секунды время выполнения вашего цикла.