Я боролся с этим в течение нескольких дней.
У меня есть код ниже, который копирует и вставляет значение, когда выполняется определенное условие If (у книги есть живые данные, подаваемые на несколько листов каждую секунду).
Код в настоящее время находится в модуле, так как условие IF может применяться ко всем листам в книге.Применение кода Excel VBA в модуле ко всем листам
Проблема, которая возникает у меня, это код, который работает только на активной карте. Мне нужно, чтобы он работал на всех листах книги. Я пробовал несколько циклов без успеха. В идеале мне нужен код для работы по всем листам в фоновом режиме (т. Е. Без их активации). Любая помощь будет оценена.
Dim TimeToRun
Sub auto_open()
Call SchedulePrices
End Sub
Sub SchedulePrices()
TimeToRun = Now + TimeValue("00:00:15")
Application.OnTime TimeToRun, "CopyPrice"
End Sub
Sub CopyPrice()
Calculate
If Range("AM7") = "1" Then
Range("AM10:AM69").Value = Range("K9:K68").Value
Range("AL10:AL69").Value = Range("B9:AM68").Value
Range("AM8:AM9").Value = Range("C2:C3").Value
End If
'run the timer sub
Call SchedulePrices
End Sub
Sub auto_close()
On Error Resume Next
Application.OnTime TimeToRun, "CopyPrice", , False
End Sub
Может хотите, чтобы принести 'Calculate' в петлю и запустить' sht.Calculate', а также. – Bond
Исправлено. Спасибо @Bond – DiegoAndresJAY
Спасибо большое. Кажется, отлично работает. Хотел бы я задать вопрос несколько дней назад! – Seale