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

VBA修改工作表中ActiveX文本框字体与背景色方法

工作表ActiveX TextBox字体/背景色修改方案

工作表内的ActiveX文本框和UserForm内的文本框对象层级不同,前者由OLEObject容器承载,直接套用UserForm的属性修改方法会因为对象引用错误、容器层拦截导致设置不生效,可按以下两种方式操作:

方法1:设计时手动设置

  • 点击「开发工具」选项卡中的设计模式按钮,进入控件编辑状态
  • 右键点击目标文本框,选择「属性」调出属性设置面板
  • 找到对应属性直接配置:
    • 背景色:定位到BackColor项,在调色板选择目标颜色,或直接输入颜色对应的长整型数值
    • 字体颜色:定位到ForeColor项选择目标颜色,也可点击Font项右侧的展开按钮,在弹出的字体设置窗口中统一配置字体样式、字号、颜色
  • 配置完成后再次点击「设计模式」按钮退出编辑状态,设置即可生效

如果设置保存后重新打开自动恢复默认,进入「文件-选项-信任中心-信任中心设置-ActiveX设置」,取消ActiveX控件禁用选项,避免Excel重置控件自定义属性。

方法2:VBA代码动态设置

禁止直接使用TextBox1.ForeColor = 颜色值这类UserForm写法,必须先通过OLEObjects集合获取到控件实体再修改属性,参考代码如下:

Sub SetTextBoxColor()
    Dim targetSht As Worksheet
    Dim targetTb As MSForms.TextBox
    ' 替换为控件所在工作表的实际名称
    Set targetSht = ThisWorkbook.Worksheets("Sheet1")
    ' 替换为目标文本框的实际控件名,默认命名为TextBox1
    Set targetTb = targetSht.OLEObjects("TextBox1").Object
    
    ' 设置背景色,示例为纯白色,可替换为自定义RGB值
    targetTb.BackColor = RGB(255, 255, 255)
    ' 设置字体颜色,示例为纯黑色
    targetTb.ForeColor = RGB(0, 0, 0)
    ' 可按需追加字体其他属性设置
    targetTb.Font.Size = 11
End Sub

运行代码前需退出设计模式,执行后属性会实时生效。

常见失效排查

  • 修改后无显示变化先确认是否退出设计模式,设计模式下控件为编辑状态,不会渲染最终显示效果
  • 代码运行报错先检查工作表是否开启了保护,保护状态下会禁止修改ActiveX控件属性,先取消工作表保护再操作
  • 确认插入的是ActiveX控件而非表单控件:右键点击控件,如果菜单中没有「查看代码」选项,说明插入的是不支持自定义颜色的表单文本框,删除后重新选择ActiveX控件分类下的文本框插入即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 08:24:21