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

Excel VBA遍历ActiveX文本框按条件改背景色无效问题求助

解决VBA遍历ActiveX文本框无效果的问题

你的代码问题出在判断控件类型的方式不对——TypeName(OLEObj)返回的是OLEObject,而非你预期的TextBox,导致整个判断条件始终不成立,代码自然没有执行效果。

修正后的代码如下:

' 先把目标工作表存为变量,避免重复调用,更高效且不易出错
Dim targetSheet As Worksheet
Set targetSheet = Worksheets(ws.Range("J2").Value)

Dim OLEObj As OLEObject
For Each OLEObj In targetSheet.OLEObjects
    ' 需判断OLE对象包裹的实际控件类型,而非OLEObject本身
    If TypeName(OLEObj.Object) = "TextBox" Then
        If OLEObj.Object.Value = "R" Then
            OLEObj.Object.BackColor = RGB(255, 0, 0)
        End If
    End If
Next OLEObj

额外补充两个优化细节:

  • 将目标工作表赋值给变量targetSheet,无需重复通过Worksheets(...)调用,既减少冗余计算,也能规避工作表切换引发的潜在问题
  • 若你确定要处理的都是ActiveX文本框,也可以用OLEObj.ProgID = "Forms.TextBox.1"来判断类型,效果一致

你之前单独指定TextBox212能生效,是因为直接调用了控件的具体名称,绕开了类型判断的错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:10:59