You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VBA中等待CPU使用率降至60%以下?

在VBA中等待CPU使用率降至60%以下的实现方法

基于你提供的CPU使用率检测代码,我们可以通过循环检测总CPU使用率+定时延迟的方式实现等待逻辑,具体代码如下:

Public Sub WaitForLowCPU()
    Dim strComputer As String
    Dim objWMIService As Object
    Dim colItems As Object
    Dim objItem As Object
    Dim cpuUsage As Integer
    
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    
    Do
        ' 查询总CPU使用率(InstanceName="_Total"对应整体CPU)
        Set colItems = objWMIService.ExecQuery( _
            "SELECT PercentProcessorTime FROM Win32_PerfFormattedData_PerfOS_Processor WHERE InstanceName='_Total'", , 48)
        
        For Each objItem In colItems
            cpuUsage = objItem.PercentProcessorTime
            Exit For ' 只取总CPU的数值,跳出循环
        Next
        
        ' 输出当前CPU使用率到立即窗口,方便调试
        Debug.Print "当前CPU使用率:" & cpuUsage & "%"
        
        ' 如果CPU使用率≥60%,暂停1秒后继续检测
        If cpuUsage >= 60 Then
            Sleep 1000
        End If
    Loop While cpuUsage >= 60
    
    Debug.Print "CPU使用率已降至60%以下,继续执行后续操作"
End Sub

' 必须在模块顶部添加此API声明(适配32/64位Office)
#If VBA7 Then
    Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
#Else
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If

关键说明:

  • 筛选总CPU使用率:原代码会返回每个CPU核心的使用率,我们通过WHERE InstanceName='_Total'直接获取整体CPU的使用率,结果更准确。
  • 循环检测逻辑:用Do...Loop While循环持续检测,直到CPU使用率低于60%才退出循环。
  • 延迟优化:使用Sleep函数让程序每次检测后暂停1秒,避免频繁查询占用过多系统资源。注意要在模块顶部添加对应的API声明,适配32位和64位Office。
  • 调试输出:通过Debug.Print输出当前CPU使用率,方便你在VBA编辑器的立即窗口查看检测过程。

内容的提问来源于stack exchange,提问作者Kram Kramer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 21:46:15