Макрос Excel не обновляется правильно - PullRequest
0 голосов
/ 11 октября 2009

Я создал макрос для Excel, но, кажется, где-то я сделал что-то не так,

Я хочу получить изображение с URL, а затем обновить его до 1 секунды (более или менее)

Sub GetPicture()

PictureURL = "This is where i put the URLi want"

Set MyPict = ActiveSheet.Pictures.Insert(PictureURL)

Cells(1).Value = Now

nextTime = Now + TimeValue("00:00:01")

End Sub

когда я запускаю макрос, он ничего не делает, только когда я нажимаю клавишу f5, он обновляется так же быстро, как я нажимаю клавишу f5, а также какое значение обновляется менее чем за 1 секунду («00:00:01»), когда я пытаюсь («00: 00: 0.5»), возникает «ошибка времени выполнения 13» «несоответствие типов» Любая помощь очень ценится.

Ответы [ 2 ]

1 голос
/ 20 октября 2009

В Excel вы можете использовать VBA для запуска кода, который обновляет рабочий лист через определенные промежутки времени. Приведенный ниже код показывает, как вы будете активировать таймер каждый раз, когда рабочий лист активируется пользователем. Всякий раз, когда срабатывает таймер (с интервалом в 1 секунду), этот код обновляет ячейку A1 в ActiveSheet текущим временем.

Для дальнейшей настройки, вы должны добавить код к OnTimerMacro , чтобы обновить Картинку или что-то еще, что может быть вашей повторяющейся задачей. (Рекомендует Хартмуту Герке за его пост по теме.)

Option Explicit

Dim Execute_TimerDrivenMacro As Boolean

Sub Start_OnTimerMacro()
    Execute_TimerDrivenMacro = True
    Application.OnTime Time + TimeValue("00:00:01"), ActiveSheet.Name & ".OnTimerMacro"
End Sub

Sub Stop_OnTimerMacro()
    Execute_TimerDrivenMacro = False
End Sub

Public Sub OnTimerMacro()
    If Execute_TimerDrivenMacro Then
    ' Do something e.g. put the actual time into cell A1 of the active sheet
    ActiveSheet.Cells(1, 1).Value = Time

    ' At the end restart timer
    Application.OnTime Time + TimeValue("00:00:01"), ActiveSheet.Name & ".OnTimerMacro"
    End If
End Sub

Private Sub Worksheet_Activate()
    'Start the timer driven method when opening the sheet
    Start_OnTimerMacro
End Sub

Private Sub Worksheet_Deactivate()
    'Stop the timer driven method when opening the sheet
    Stop_OnTimerMacro
End Sub
0 голосов
/ 11 октября 2009

если вы хотите, чтобы макрос повторялся, вы должны поместить его в цикл do ... before. Единственная проблема в том, что вы не можете запускать макрос постоянно. Должен быть способ остановить это. Цикл do ... till поможет в этом, но вы должны найти разумный выход из цикла. Можете ли вы дать немного больше информации о том, что в конечном итоге вы хотите сделать?

Также звучит так, будто вы хотите, чтобы запуск макроса был вызван чем-то, кроме нажатия клавиши F5. Можете ли вы объяснить, когда вы хотели бы, чтобы это началось?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...