Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在VBA代码运行时使用Excel电子表格_Vba_Excel - Fatal编程技术网

在VBA代码运行时使用Excel电子表格

在VBA代码运行时使用Excel电子表格,vba,excel,Vba,Excel,我得到了一个简单的代码,如果值,如果lass,那么X等待一个小时,否则继续循环,基本上代码需要运行一天 问题是,当代码处于等待状态时,我根本无法使用excel。 有办法解决这个问题吗? 我正在添加部分代码 For i = 1 To 3 Set OutMail = OutApp.createitem(0) LastRefHour = Cells(2, 1).Value HourNow = Hour(Now()) Set rng = Sheets("Sheet1").Range("D2:G9

我得到了一个简单的代码,如果值,如果lass,那么X等待一个小时,否则继续循环,基本上代码需要运行一天

问题是,当代码处于等待状态时,我根本无法使用excel。 有办法解决这个问题吗? 我正在添加部分代码

    For i = 1 To 3
Set OutMail = OutApp.createitem(0)
LastRefHour = Cells(2, 1).Value
HourNow = Hour(Now())
Set rng = Sheets("Sheet1").Range("D2:G9").SpecialCells(xlCellTypeVisible)

If (LastRefHour < HourNow) Then

    ActiveWorkbook.Connections("Monitor-Test").Refresh
    Application.CalculateUntilAsyncQueriesDone
    If Not Application.CalculationState = xlDone Then
    DoEvents
    End If

Cells(1, 1).Copy
Cells(2, 1).PasteSpecial xlPasteValues

Else:

    Application.Wait (Now + TimeValue("00:59:00"))


End If
i=1到3的

Set-OutMail=OutApp.createitem(0)
LastRefHour=单元格(2,1).值
HourNow=小时(现在())
设置rng=纸张(“纸张1”).范围(“D2:G9”).特殊单元格(xlCellTypeVisible)
如果(LastRefHour
我建议使用

以下是如何使用它:

Option Explicit

Sub RunCodeInIntervalMode()
Dim StartTime As Single, FinishTime As Single
'i decided to set below variable for short interval of time, 
'because this is only an example
Const WaitTime As Integer = 5 'in second
Dim i As Integer 'counter

'clear entire range
ThisWorkbook.Worksheets(1).Cells.ClearContents

'define finish time
FinishTime = Timer + 30
Do
    'define start time
    StartTime = Timer
    'increase counter
    i = i + 1
    'run procedure
    DisplayTime i, StartTime, FinishTime
    'enable to work in Worksheet in between next run
    Do While Timer < StartTime + WaitTime
        DoEvents
    Loop
Loop While Timer < FinishTime

End Sub

''let's say below procedure is your procedure
Sub DisplayTime(ByVal step As Integer, ByVal currTime As Single, ByVal finTime As Single)

    With ThisWorkbook.Worksheets(1)
        .Range("A1") = step
        .Range("B1") = currTime
        .Range("C1") = finTime
    End With
End Sub
选项显式
子RunCodeInIntervalMode()
暗淡的开始时间是单身,结束时间是单身
“我决定在短时间内设置以下变量,
因为这只是一个例子
常量WaitTime为整数=5'秒
Dim i作为整数计数器
“清除整个范围
此工作簿.工作表(1).单元格.ClearContents
'定义完成时间
FinishTime=计时器+30
做
'定义开始时间
开始时间=计时器
“增加计数器
i=i+1
'运行程序
显示时间i,开始时间,结束时间
'启用在下一次运行之间在工作表中工作
当计时器<开始时间+等待时间时执行
多芬特
环
计时器
我希望您现在知道如何实现这一点。

我建议您使用

以下是如何使用它:

Option Explicit

Sub RunCodeInIntervalMode()
Dim StartTime As Single, FinishTime As Single
'i decided to set below variable for short interval of time, 
'because this is only an example
Const WaitTime As Integer = 5 'in second
Dim i As Integer 'counter

'clear entire range
ThisWorkbook.Worksheets(1).Cells.ClearContents

'define finish time
FinishTime = Timer + 30
Do
    'define start time
    StartTime = Timer
    'increase counter
    i = i + 1
    'run procedure
    DisplayTime i, StartTime, FinishTime
    'enable to work in Worksheet in between next run
    Do While Timer < StartTime + WaitTime
        DoEvents
    Loop
Loop While Timer < FinishTime

End Sub

''let's say below procedure is your procedure
Sub DisplayTime(ByVal step As Integer, ByVal currTime As Single, ByVal finTime As Single)

    With ThisWorkbook.Worksheets(1)
        .Range("A1") = step
        .Range("B1") = currTime
        .Range("C1") = finTime
    End With
End Sub
选项显式
子RunCodeInIntervalMode()
暗淡的开始时间是单身,结束时间是单身
“我决定在短时间内设置以下变量,
因为这只是一个例子
常量WaitTime为整数=5'秒
Dim i作为整数计数器
“清除整个范围
此工作簿.工作表(1).单元格.ClearContents
'定义完成时间
FinishTime=计时器+30
做
'定义开始时间
开始时间=计时器
“增加计数器
i=i+1
'运行程序
显示时间i,开始时间,结束时间
'启用在下一次运行之间在工作表中工作
当计时器<开始时间+等待时间时执行
多芬特
环
计时器

我希望您现在已经知道如何实现这一点。

请参见。Excel的哪个版本?版本是Excel 2013See。Excel的哪个版本?版本是Excel 2013