Excel宏无法正确更新

时间:2009-10-11 02:28:16

标签: excel vba excel-vba

我为excel创建了宏,但似乎某处我做错了什么,

我想从网址获取图片,然后将其更新至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 个答案:

答案 0 :(得分:1)

在Excel中,您可以使用VBA触发在特定时间间隔内更新工作表的代码。下面的代码显示了每次用户激活工作表时如何激活计时器。每当定时器触发时(此处间隔1秒),此代码将使用当前时间更新ActiveSheet中的单元格A1。

要进一步自定义,您可以将代码添加到 OnTimerMacro ,以便更新图片或您重复执行的任何其他任务。 (哈特穆特·吉尔克(Hartmut Gierke)就这个话题发表的帖子。)

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

答案 1 :(得分:0)

如果你想重复宏,你必须将它放在do ... until循环中。唯一的问题是,你无法真正拥有宏运行。必须有办法阻止它。 do ... until循环将有助于此,但你必须从循环中得出一个合理的退出。你能否提供一些关于你最终想要做什么的背景知识?

另外,听起来你想要通过按F5以外的其他东西来触发宏的运行。你能解释一下你想要什么时候开始吗?