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

如何重置ActiveSheet上的ActiveX控件?解决运行时错误438

解决方法

错误原因

你代码里的ActiveSheet.OLEObject是单数形式,正确的ActiveX控件集合名称是复数的OLEObjects,这是触发运行时错误'438'的直接原因。另外,不是所有OLE控件都有Value属性,直接赋值会导致新的错误,需要先判断控件类型。

修正后的代码

Sub Reset_All_control_on_ActiveSheet()
    Dim ctrl As OLEObject
    ' 遍历工作表所有OLE控件(ActiveX控件)
    For Each ctrl In ActiveSheet.OLEObjects
        ' 只处理TextBox和ComboBox控件
        Select Case progID(ctrl)
            Case "Forms.TextBox.1", "Forms.ComboBox.1"
                ctrl.Object.Value = ""
        End Select
    Next ctrl
End Sub

' 辅助函数:获取控件的ProgID
Function progID(ctrl As OLEObject) As String
    On Error Resume Next
    progID = ctrl.progID
    On Error GoTo 0
End Function

代码说明

  • 用ActiveSheet.OLEObjects(复数)遍历所有ActiveX控件,解决438错误。
  • 通过progID判断控件类型,只给TextBox和ComboBox设置空值,避免给标签、按钮等无Value属性的控件赋值出错。
  • 控件的实际值需要通过ctrl.Object.Value访问,直接用ctrl.Value在部分控件上也可能触发错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 00:31:13