vba - 如何定位 ActiveX 标签内联形状以更改背景色并隐藏标签中的文本
问题描述
我刚刚从一个适用于 ActiveX 文本框控件的网站上找到了这段代码。我希望它在一个标签 ActiveX 控件上工作,当我提交命令按钮控件时,标签中会发生两件事:标签从红色变为白色和 .caption = ""。(我的目标是隐藏标签)。
我正在尝试的代码适用于文本框控件,但不适用于标签,因为我认为它们是不同的数据类型?(我得到一个不匹配的错误)。你能帮忙吗?提前谢谢?
这是我尝试过的,但得到错误:
Dim ils As Word.InlineShape
Dim olef As Word.OLEFormat
Dim tb As MSForms.Label
Set ils = ActiveDocument.InlineShapes(1)
Set olef = ils.OLEFormat
Set tb = olef.Object
tb = lbl_test
lbl_test.Caption = ""
lbl_test.BackColor = RGB(255, 255, 255)
解决方案
如果 InlineShapes(1) 引用的 InlineShape不是MSForms.Label,您将在“Set ils”行中收到类型不匹配错误。所以也许你的代码使用了错误的形状。如果 InlineShapes(1)是一个 MSForms.Label,这应该可以工作:
Dim ils As Word.InlineShape
Dim olef As Word.OLEFormat
Dim tb As MSForms.Label
Set ils = ActiveDocument.InlineShapes(1)
Set olef = ils.OLEFormat
Set tb = olef.Object
tb.Caption = ""
tb.BackColor = RGB(255, 255, 255)
这条线
tb = lbl_test
可能正在做一些与你想的完全不同的事情。推杆
lbl_test.Caption = ""
在它建议您尝试创建对 MSForms.Label 对象的引用之后,但我猜 lbl_test 是一个字符串变量(我们无法从您提供的代码段中看到)。如果是这样,尝试设置
lbl_test.Caption
也会导致错误。
什么
tb = lbl_test
实际上所做的是将 lbl_test 的值分配给 tb 对象的“默认成员”。对于 MSForms.Label 对象,默认成员是 .Caption,(您可以在 VB 编辑器的对象查看器中查找它)因此实际上该行应该设置标签的标题。但最好不要依赖默认成员并将其拼写为
tb.Caption = lbl_test
有几种方法可以访问文档表面中的 ActiveX 控件。有这个,但是如果您碰巧知道它的名称,您也可以直接从 ThisDocument 访问该控件,例如通过 ThisDocument.Label1。那么你真的不需要知道控件的类型。
但否则你必须像你一样访问 InlineShape 或 Shape 。因为不同的 ActiveX 控件确实有不同的成员(例如,标签有标题但 TextBox 没有),您最好在使用它之前检查对象类型,也许像这样......
Dim ils As Word.InlineShape
Set ils = ActiveDocument.InlineShapes(1)
If Not (ils.OLEFormat Is Nothing) Then
With ils.OLEFormat
Select Case .ClassType
Case "Forms.Label.1"
' You don't even need to assign to an object variable
With .Object
.Caption = ""
.BackColor = RGB(255, 255, 255)
End With
Case "Forms.TextBox.1"
' do the appropriate thing
Case "Forms.CheckBox.1"
' do the appropriate thing
Case Else
' e.g. it might not be an ActiveX control
' perhaps do nothing
End Select
End With
End If
推荐阅读
- javascript - 角度保存编辑的内容
- android - 在android中仅保存pdf的第一页的多页pdf
- cloud - 在 Git Hub 操作中运行赛普拉斯时连接的 ARM 设备
- python - 如何使使用 Python 请求库的 GET 请求永远不会导致程序失败?
- docker - Docker 将 docker-compose 容器移动/导出到另一台机器
- wpf - 如何从签名板自动化手动签名 - Signotec Sigma?
- wordpress - 我可以使用 Wordpress Customizer API 更改按钮颜色吗?
- label - 打印时 QR 码大小随机变化 - CAB SQUIX 4 M - JScript 编程语言
- vue-cli - ElementUI 表未在 Jest 测试中呈现
- .net-assembly - 缺少 ILSpy 程序集参考