精华内容
下载资源
问答
  • VB DoEvents 的使用

    千次阅读 2017-02-28 21:23:51
    DoEvents 就是 转让控制权,以便让操作系统处理其它的事件
    原文地址:VB 响应中断程序 作者:chengxingcheng21

    2008-01-16 21:58
    借用许多介绍DoEvents 的文章,DoEvents 就是 转让控制权,以便让操作系统处理其它的事件。但是,当看到这句话时,脑子里面的概念很模糊,只有一个浅薄的认识。查阅了一些资料,有了一定的了解。
    打个比方:如果现在有一个从1 到100000000的循环,有一点编程常识的人肯定知道在这个耗时较长的循环过程中,基本上是不能进行别的操作(当然不排除一些特别的情况),但是因为某些特别的要求,你要在循环过程中,进行其他操作,这时DoEvents 就派上用场了。
    现在,大家应该明白了DoEvents 的主要功能了吧。下面举一些实例(基本上都是转载的),当然建议自己能亲自去试验,理解会深一些。

    (注: '** 后面的代码表示如果在该处用了这个语句   以下代码中用到了一些api函数,请用vb附带的api浏览器查阅) (转载)

    一. 基本用法:
    1.窗体启动时如果要处理的事务太多或者用sleep函数暂停,造成其很久都不能出现时怎么办?
    例如代码:
    Private Sub Form_Load()
    Show
    '**DoEvents
    Sleep 5000
    End Sub
    通常容易想到在sleep前加个show,但还是不能达到预想的效果,窗体虽然出来了,但好象只达到了一半,如果加上第3句,将看到效果大不相同

    2.如果有个很耗时的循环导致程序不响应,怎么办?
    例如:
    Dim L As Long
    For L = 1 To 1000000
    '** DoEvents
    Next L
    如果无'**,在循环过程中程序无法处理事件,对于用户来说是不响应,无法控制的
    3.想在循环中看到处理过程?
    同样:
    Dim L As Long
    For L = 1 To 10000
    '** DoEvents
    Text1.Text=Cstr(l)
    Next L
    无'** 时将无法看到text1中的变化,而只在循环结束时看到最后结果
    4.怎样中止循环?
    如果有:
    Private Sub Command3_Click()
    Dim L As Long
    Do
    L = L + 1
    Debug.Print L
    DoEvents
    Loop
    End Sub
    会发现当关闭窗口后,debug中的数据仍然在变化,说明并没结束
    需要如下:
    Dim IsExit As Boolean
    Private Sub Command1_Click()
    Dim L As Long
    IsExit = False
    Do While DoEvents
    If IsExit = True Then Exit Do
    L = L + 1
    Loop

    End Sub

    Private Sub Command2_Click()''或者在form_unload模块中等等
    IsExit = True
    End Sub
    其中 isexit是全局变量
    < >有些人喜欢用end语句来结束程序,小程序固然可以,但当太大,或者调用了某些特殊的api函数后可能导致预想不到的错误,如果装载了许多东西在 程序结束时不处理将卸载很慢,而且这种做法也极不符合正规软件的要求...总之end语句毛病很多,此不详谈,建议少使用甚至不使用

    二. 其基本用法大概就这些,现在解析其中的一些[难点]

    1.为什么还是不能结束?
    代码如下:
    Dim IsExit As Boolean
    Private Sub Command1_Click()
    Dim L As Long
    IsExit = False
    Do
    If IsExit = True Then Exit Do '句0
    DoEvents '** 句1
    Text1.Text = CStr(L) '** 句2
    L = L + 1
    Loop
    End Sub

    Private Sub Form_Load()
    Static N As Long
    N = N + 1
    MsgBox N
    End Sub

    Private Sub Form_Unload(Cancel As Integer)
    IsExit = True
    End Sub

    运行结果:启动时msg显示1,点击command1,text1在变化
    此时再点form右上角的小差(关闭窗体),发现vb运行控制上的按扭并没变化,说明程序还在运行.如果编译成程序后运行,按下ctrl+del+alt也可发现它还没结束.
    通过读代码,并没发现错误,怎么回事?

    关键在于 句2 访问了控件的属性
    代 码运行路径:当在doevents 时,程序释放控制权,可以接收事件消息,form-unload事件只能从此处产生,假设此时关闭form ,unload事件发生,即doevents后就运行unload代码,得到isexit=t,并且form卸载,代码返回到doevents 之后,运行 句2.注意现在form 已经卸载了,text1从哪里来呢?
    于是form重新装载,代码跳到form_load模块运行,所以在关闭窗体后可以看到msg 显示2,此模块运行完后再继续句2后面的代码,当下次循环遇到 句0时退出循环
    另:既然退出了循环,怎么还不能结束?
    vb程序规定(其实其他的windows语言一样):窗体卸载时并不是立即卸载其模块代码,而只先卸载窗体中的控件和一些属性值,程序中最后一个窗体卸载时才完全卸载.
    在这个单窗体程序中,form卸载时因为循环的控制无法卸载代码,失去了卸载代码的机会,导致再也不能卸载(因为没卸载代码,所以运行的 句2 是并不会出错)
    另:既然再次运行了form_load代码,怎么看不见窗体?
    因为程序启动时窗体的到显示的消息,而只运行此模块并没有(如果在msgbox n语句前加上show,就可以看到它了)
    如何解决?
    通过以上分析,应该很简单,把句1 和句2调换一下就可以了,关键:
    <仔细分析代码是如何运行的,避免在form已经卸载了情况下访问控件>

    2.用了doevents速度太慢了怎么办?
    doevents的代价是速度变慢,但要程序响应又不得不用
    其实doevents语句允许任何应用程序执行相关事件,而不仅仅是你自己的程序,所以变得很慢.
    可以让它响应本程序事件动作,需要用到api函数GetInputState
    例如用: If GetInputState() Then DoEvents '来代替doevents可使循环运行更快

    3.既要同时响应事件又要控件不变化,怎么办?
    例如在一个长的循环中向listview控件中添加记录,无doevents时程序无响应,但有它时控件又闪的厉害
    解决办法:a.不一定每次循环都doevents,可以在适当时间时才用,至少没那么闪
    b. 应用api函数 ValidateRect 功能是使指定的矩型区域生效,通知Windows不对指定的区域进行重画另:InvalidateRect 功能相反,同时需要用到函数 GetClientRect 取得指定对象的矩形区域应用*rect函数指定listview的矩形区不重画,即可避免闪烁(但还是要注意恢复重画,否则看不见了真实效果)

    4.控时循环和变速齿轮
    请看下面的代码:
    Option Explicit
    Private Declare Function timeGetTime Lib "winmm.dll" () As Long
    Dim IsExit As Boolean
    Private Sub Command1_Click()
    Dim L As Long
    Dim Kt As Long
    IsExit = False
    Do
    Kt = timeGetTime()
    'do something
    L = L + 1
    Text1.Text = L
    'DoEvents '句 1
    While timeGetTime - Kt < 50 '句 2
    'While Abs(timeGetTime - Kt) < 50 '句 3
    'While Abs(timeGetTime - Kt) And (Not IsExit) < 50 '句 4

    DoEvents '句 5
    Wend
    'DoEvents '句 6
    If IsExit Then Exit Do
    Loop
    End Sub

    Private Sub Form_Unload(Cancel As Integer)
    IsExit = True
    End Sub
    其中可用的代码(除去加"'" 号的代码)就是通常的控时循环代码
    运行代码并不会出现错误,但在循环过程,请开启变速齿轮看看
    当关闭齿轮时,将发现text1.text停止了,别慌,等一段时间它又会继续(这要看你设定的时间,这里是50毫秒,如果设定的太长text1.text将半天都没变化,这是怎么回事?
    变速齿轮在启动时将hook.dll映射到你的程序地址运行,更改了timegettime()函数获取的时间
    如果在句2和句3间插入debug.print timegettime,timegettime-kt 将发现,在关闭齿轮的瞬间后者变成了负值,timegettime变小了,所以才造成需要等很久
    如果是编写游戏,而用户开了齿轮,那可就惨了

    解决方案:
    a.用句3代替句2,这个方法最简便,虽然不符实,但不会出问题,建议使用
    b.不要句5,换用句6(这样就能达到效果吗?) 因为齿轮还是从doevents语句运行时才能插的进来,所以只要kt=timegettime 和 timegettime之间没有doevents就不会出错
    ab.两种方法都有些小问题,但无大碍,有兴趣者请自己分析

    5.程序怎么"死了"?
    这只是一些人编写时没注意到的小问题,提醒一下:
    同样用上面的代码,如果设定的时间太短,以至在代码运行到句2时已经超时了,句5将不能运行了,当然程序就死了哦,以防万一,加上句1,所以此时也只能用a方案来解决齿轮的问题了
    有必要用句4代替句3 吗? 除非你设定的时间太长,人家想关闭你的程序要等上好半天
    展开全文
  • Randomize private function getInt()  dim n,m as integer  Randomize  n=1 m=3  getInt=Int((m+1-n)*rnd + n) ...DoEvents dim c as Boolean private sub gameMain()  while c...

    Randomize

    private function getInt()

      dim n,m as integer

      Randomize

      n=1

         m=3

      getInt=Int((m+1-n)*rnd + n)

     end function

     

    DoEvents

    dim c as Boolean

    private sub gameMain()

      while c

        Do Until z <> iNew

          iNew = getnt

        loop

        z = iNew

               Image1.Picture = LoadPicture(path)

        doEvents

      Wend

    end sub

    private sub do()

      dim str as String

      str = iif(str = "s","L","S")

      c = not c

      gameMain

    end sub

    转载于:https://www.cnblogs.com/liangx85/p/3484821.html

    展开全文
  • DoEvents的应用及注意事项  转让控制权,以便让操作系统处理其它的事件。 DoEvents 函数会返回一个 Integer,以代表 Visual Basic 独立版本中打开的窗体数目,例如,Visual Basic,专业版,在其它的应用程序...
    DoEvents的应用及注意事项  
    

    转让控制权,以便让操作系统处理其它的事件。

    DoEvents 函数会返回一个 Integer,以代表 Visual Basic 独立版本中打开的窗体数目,例如,Visual Basic,专业版,在其它的应用程序中,DoEvents 返回 0。

    DoEvents 会将控制权传给操作系统。当操作系统处理完队列中的事件,并且在 SendKeys 队列中的所有键也都已送出之后,返回控制权。

    DoEvents 对于简化诸如允许用户取消一个已启动的过程 — 例如搜寻一个文件 — 特别有用。对于长时间过程,放弃控制权最好使用定时器或通过委派任务给 ActiveX EXE 部件来完成。以后,任务还是完全独立于应用程序,多任务及时间片由操作系统来处理。

    小心 确保以 DoEvents 放弃控制权的过程,在第一次 DoEvents 返回之前,不能再次被其他部分的代码调用;否则会产生不可预料的结果。此外,如果其它的应用程序可能会和本过程以不可预知的方式进行交互操作,那么也不要使用 DoEvents,因为此时不能放弃控制权。

    使用 DoEvents

    尽管 Timer 事件是后台处理的最好工具,对耗时极多的任务,情况更是如此,但是,DoEvents 函数还是提供了一种取消任务的简便方法。例如,下列代码将显示一个 "Process" 按钮,单击这个按钮时,它将变成 "Cancel" 按钮。再次单击按钮又将中断正在执行的任务。

    '此按钮标题是 "Process"
    Private Sub Command1_Click()
    '过程的所有实例都共享静态变量。
      Static blnProcessing As Boolean
      Dim lngCt As Long
      Dim intYieldCt As Integer
      Dim dblDummy As Double
      '按下按钮时,检测是否在处理
      If blnProcessing Then
       '如果正在处理,则取消
          blnProcessing = False
      Else
          Command1.Caption = "Cancel"
          blnProcessing = True
          lngCt = 0
       '执行一百万次浮点乘法计算。每一千次后,检测是否要取消。
          Do While blnProcessing And (lngCt < 1000000)
            For intYieldCt = 1 To 1000
                lngCt = lngCt + 1
                dblDummy = lngCt * 3.14159
            Next intYieldCt
          'DoEvents 语句允许其它事件发生,包括第二次按此按钮。
            DoEvents
          Loop
          blnProcessing = False
          Command1.Caption = "Process"
          MsgBox lngCt & " multiplications were performed"
      End If
    End Sub

    DoEvents 将控制切换到操作环境内核。只要此环境中的所有应用程序都有机会响应待处理事件,应用程序就又恢复控制。这不会使应用程序放弃焦点,但会使后台事件能够得到处理。

    这种妥协的结果可能并不总是达到预期目标。例如,下述 Click 事件代码在单击按钮后要一直等候十秒钟,而后才显示一条信息。如果在按钮正在等待期间单击它,则将以相反顺序完成单击操作。

    Private Sub Command2_Click()
      Static intClick As Integer
      Dim intClickNumber As Integer
      Dim dblEndTime As Double
          '每次单击按钮时
          '赋予唯一数值。
      intClick = intClick + 1
      intClickNumber = intClick
          '等待十秒。
      dblEndTime = Timer + 10#
      Do While dblEndTime > Timer
          '不做任何事情,仅仅允许
          '其它应用程序处理
          '它们的事件。
          DoEvents
      Loop
      MsgBox "Click " & intClickNumber & " is finished"
    End Sub

    对于通过 DoEvents 放弃控制的事件过程,有时可能希望防止在 DoEvents 返回之前重新调用这一过程。否则将无穷无尽地调用该过程,直到系统资源消耗殆尽。可暂时禁止控件,或象上例一样,使用一个静态的“标志”变量防止此事发生。

    在使用全局数据时避免 DoEvents
    当一个函数已通过 DoEvents 放弃控制时,可相当安全地再次调用函数。例如,下一过程将检测质数并用 DoEvents 语句周期地启动其它应用程序处理事件:

    Function PrimeStatus (TestVal As Long) As Integer
      Dim Lim As Integer
      PrimeStatus = True
      Lim = Sqr(TestVal)
      For I = 2 To Lim
          If TestVal Mod I = 0 Then
            PrimeStatus = False
            Exit For
          End If
          If I Mod 200 = 0 Then DoEvents
      Next I
    End Function

    该代码中每重复 200 次就调用一次 DoEvents 语句。这样一来,当该环境的其余部分对事件作出响应时,只要有必要,PrimeStatus 过程就可继续计算。

    考虑在调用 DoEvents 期间发生的事情。在其它窗体和应用程序处理事件时将暂停执行应用程序代码。这些事件之一有可能是一个按钮单击操作,它将再次启动 PrimeStatus 过程。

    这将导致重新进入 PrimeStatus 过程的,但是,因为在函数每次出现时,堆栈都为其参数和局部变量分配了空间,所以重入不会引发冲突。当然,如果过多调用 PrimeStatus,则可能出现“溢出堆栈空间”错误。

    如果 PrimeStatus 使用或改变模块级变量或全局数据,情况就会完全不同。此时,在 DoEvents 能够返回之前执行 PrimeStatus 的另一个实例,这将导致模块数据或全局数据的值完全不同于它们在调用 DoEvents 之前的值。于是,PrimeStatus 的结果将会难以预料。

    VB中DoEvents的注意事项

    对与再大循环里 加入   DoEvents却是可以使应用程序响应其他程序,但是 DoEvents也会很大程度上影响循环的速度,所以一般情况我这样用

    If GetInputState Then DoEvents

    虽然多了个判断语句,但速度上确快了很多

    比较以下代码代码就知道了速度的差别

    Private Declare Function GetInputState Lib "user32" () As Long

    Private Declare Function GetTickCount Lib "kernel32" () As Long

    Private Sub Command1_Click()

          Dim s As Long

          s = GetTickCount

          For i = 1 To 1000000

              DoEvents

          Next

          MsgBox GetTickCount - s

    End Sub

    Private Sub Command2_Click()

          Dim s As Long

          s = GetTickCount

          For i = 1 To 1000000

              If GetInputState Then DoEvents

          Next

          MsgBox GetTickCount - s

    End Sub
    展开全文
  • VB下有一个DoEvents方法,可以让程序在执行操作的同时仍可以处理其他事件,用这个方法可以有效地解决画面无法刷新的问题。 VC下的DoEvents版本的代码如下:
  • A1,2)"//A2存放员工工号和姓名 mark = True Do While mark DoEvents Sleep 50 ActiveSheet.Calculate Loop End Sub Sub 停止抽奖() mark = False End Sub Sub 保存抽奖() CH = [A1] ActiveCell = [A2] Sheets("人员...

    学代码,做出点东西特别有成就感,今天我们来完成一个抽奖系统,感受一下成就感带来的愉悦!come on!

    先给你们展现一下成果:

    用vba写一个有意思的抽奖系统

     

    此抽奖适合各场合抽奖,随时准备震惊四座!

    首先看一下我们的数据和页面

    用vba写一个有意思的抽奖系统

     

    用vba写一个有意思的抽奖系统

     

    来看一下代码吧:

    注意:'抽奖系统!A1单元格看起来是空白的,其实是抽取的人员名单表中员工的所在行号,只是白色看不见它。

    'A1单元格=RANDBETWEEN(2,COUNTA(人员名单!A:A)),这句话就是从2到员工总数,随机取 一个数。

    Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) '暂停 64位系统
    
    'Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) '暂停  32位系统
    
    Dim mark As Boolean
    Sub 立即开始()
    
        [A2] = "=INDEX(人员名单!A:B,抽奖系统!A1,1)&CHAR(10)&INDEX(人员名单!A:B,抽奖系统!A1,2)"//A2存放员工工号和姓名
        mark = True
        Do While mark
            DoEvents
            Sleep 50
            ActiveSheet.Calculate
         Loop
    
    End Sub
    
    Sub 停止抽奖()
    
    mark = False
    
    End Sub
    
    Sub 保存抽奖()
        
        CH = [A1]
        
        ActiveCell = [A2]
        
        Sheets("人员名单").Cells(CH, 1).EntireRow.Delete
        
            Application.EnableEvents = False
            
                [A2] = ""
        
            Application.EnableEvents = True
        
    '
    End Sub
    

    每天学一点,工资翻一番,关注我的公众号“学会数据分析”,一起加油,一起进步!欢迎你的关注!

    上面抽奖的文件地址,绝对可用:

    链接: https://pan.baidu.com/s/1F1718dSh8mYWGPuZjJfmSw 提取码: 4dyq

    提取完文件可不可以关注我呀!白嫖虽好,可不要贪杯哦!

    展开全文
  • Application.DoEvents()那些事

    千次阅读 2019-03-07 21:35:27
    初识Application.DoEvents()是看托管D3D代码。一般winform的Main函数是这样的: [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); ...
  • VB DoEvents用法

    千次阅读 2015-04-27 10:48:53
    我要实现一个类似Windows复制(移动)文件时的提示窗体,耗时很长,且要求中断后能继续未完成的操作,不知使用DoEvents从长循环中跳出后,程序将从何处开始继续执行,是否是从DoEvents所在的Sub开始?(倔小孩) 事实上仅...
  • vba之网抓详细事例

    2018-05-27 22:38:01
    VBA抓取网页数据详细教程,举例抓取网页中的表格数据 Sub test() Dim ie, dmt, tbs, i&, tb Set ie = CreateObject("InternetExplorer.Application") '创建一个IE对象 With ie .Visible = True '显示它 ....
  • QQ vba 登 录

    2013-03-15 12:24:39
    DoEvents Loop .document.getelementbyid("u").Value = "123456789" .document.getelementbyid("p").Value = "3s3.cn***" .document.getelementbyid("button").Click '登 录 Do Until .readystate = 4 ...
  • vba 延时

    2018-12-13 15:45:00
    Public Function delay(t As Single) Dim T1 As Single T1 = Timer Do DoEvents Loop While Timer - T1 End Function 转载于:https://www.cnblogs.com/bignine/p/10114402.html
  • 大家好,我们今日讲解“VBA信息获取与处理”教程中第九个专题“利用IE抓取网络数据”的第三节“利用IE,抓取解禁股票数据”,这个专题是非常有用的知识点,希望大家掌握。第四节 利用IE,抓取解禁股票数据大家好,这...
  • VBA实现进度条的显示

    2010-06-27 07:36:12
    VBA实现进度条的显示 Sub Test() ' The UserForm1_Activate sub calls Main UserForm1.LabelProgress.Width = 0 UserForm1.Show End Sub Private Sub UserForm_activate() Call Main End Sub Sub Main() ' ...
  • VBA编程之放假倒计时器

    千次阅读 2016-05-29 02:38:26
    举个例子:在窗口中放一个textbox,然后写程序,循环从1到10万,然后循环体里面就是把这个数写到textbox里面,如果没有DoEvents,程序运行的时候就是死机一样,然后直到最后窗口显示10万,中间数字什么也看不见。...
  • VBA 上传下载 代码

    2018-09-08 14:34:48
     DoEvents    Wend    ie.Document.getElementsByName("commit")(0).disabled = False    ie.Document.getElementsByName("commit")(0).className = "btn btn-create qa-issuable-create-button"  ie....
  • VBA 类模块理解和使用总结

    千次阅读 2021-04-19 18:52:59
    VBA 类模块理解和使用总结 一、类的概念 记得有人总结,VBA是基于面向对象(OOP)的编程语言,而java是完全面向对象的编程语言,为了更好地理解面向对象,去学习了一下java,现在回过来看VBA的面向对象特性就比较好...
  • 1、没有DoEvents时运行(出现未响应): 2、有DoEvents时运行(没有未响应): 二、关键点   1、DoEvents函数,将控制权交给系统,防止无限循环。   2、将下面程序中的“if”语句删除试试两种效果有何不一样。...
  • 技术手段VBA之爬虫

    千次阅读 2020-10-19 15:49:53
    其实Excel有一个比公式还要强大的功能,就是VBA。可以利用VBA进行编程,实现公式以外的复杂功能。 用下面的例子来简单介绍一下如何利用VBA进行爬虫。 Sub HTTPREQUEST() Dim httpReq As XMLHTTP60 Set httpReq = ...
  • 要不是年会需要使用PPT来做抽奖,我才不会用这么难用的VBAVBA要实现延时功能,大多数教程都会拿2016年ExcelHome里的上古帖子不厌其烦地复制粘贴,然后你复制下来发现根本无法运行。 现在我从头给你讲,到底怎样...
  • VBA基础知识

    千次阅读 2019-11-12 14:18:36
    VBA入门学习笔记本关键词:VB、VBA、Microsoft office、excel、access、PowerPoint1.VBA的基本概念2 数据类型2.1 VBA基本数据类型2.2 VBA自定义的数据类型3 VBA常量3.1 VBA系统定义常量3.2 VBA固有常量3.2 VBA符号...
  • VBA获取网页表格数据

    2021-06-12 16:17:41
    4 DoEvents Loop End With '定义数据所在表格号码 Set TableX = IE.document.getElementsByTagName("table")(TableNumber) '遍历此表的所有行,TD标签. '在此说明一下TABLE相关属性,ROWS是行数,COLS是列数 '网页...
  • VBA发送email

    千次阅读 2019-11-06 22:05:12
    通过VBA代码发送邮件 Sub SendEmail() Dim App As Object Dim Email As Object Set App = CreateObject("Outlook.Application") Set Email = App.CreateItem(0) With Email .Subject = "M...
  • VBA HTML数据抓取指南

    2021-06-10 14:23:27
    0 Do Until page = pageTotal DoEvents page = IE.document.getelementbyid("MainContent_pager_to").innertext With IE.document.getelementbyid("MainContent_grid") For r = 1 To .Rows.Length - 1 If Not ...
  • 该文件包含一个带有提交按钮的表单,我希望在点击按钮时运行我的vba函数。我做了以下处理InternetExplorer...在VBA中处理HTMLElement事件类模块 “CIE”Public WithEvents ie As SHDocVw.InternetExplorerPrivate Su...
  • xlErrorHandler WaitRes = WaitForSingleObject(ProcHandle, DEFAULT_POLL_INTERVAL) Do Until WaitRes = WAIT_OBJECT_0 DoEvents Select Case WaitRes Case WAIT_ABANDONED ' Windows abandoned the wait ...
  • VB中DoEvents的用途

    千次阅读 2013-02-15 21:23:46
    当VB程序运行一个很大的循环时,由于占用CPU时间太多,会使系统出现类似死机一样的状态,这时如果在循环中用DoEvents语句,就可以把占用的时间让出一部分给其他软件,从而改善系统的运行效能。 打个通俗的比方...
  • xmlHttp.Open Method, URL, Async, Username, Password xmlHttp.Send '等待响应 Do While xmlHttp.ReadyState <> 4 DoEvents Loop '得到请求数据 If xmlHttp.ReadyState = 4 Then '根据要求返回不同结果 Select Case...
  • 我有一个Excel VBA宏,它通过Internet Explorer与Intranet站点交互,遍历客户列表,打开客户配置文件,更新字段并保存更改.我遇到的问题是,当我将更改保存到客户配置文件时,Web应用程序中有一个弹出窗口,要求我确认其...
  • 21_vq=26" .send End With 'Do While myHTTP.ReadyState <> 4 'DoEvents 'Loop s = myHTTP.responsetext Dim regex As Object, mches As Object, mch As Object, i&, j& Set regex = CreateObject("VBScript.Regexp...
  • 我知道之前曾经问过这样的问题,但我的情况有点不同,而且... 我一直在使用以下类型的方法单独和串联来处理等待页面加载,但有时VBA仍然设法继续执行并将HTMLDocument变量设置为页面,而没有相应的信息导致宏调试 . ...
  • ppt抽奖vba代码

    千次阅读 2020-01-18 14:29:18
    DoEvents’将事务交给计算机,可以进行其他操作 If stop_flag = True Then Exit Do End If Loop End Sub Private Sub CommandButton2_Click() CommandButton2.Enabled = False stop_flag = True End Sub ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 570
精华内容 228
关键字:

doeventsvba

友情链接: 功率表 2.0.rar