2014-09-19 38 views
0

我有一个带有标签的按钮,按钮在单击后执行vba事件。我想在事件结束后更改按钮上的标签和字体颜色。什么是完成这个最好的方法?我尝试使用Me!ActiveControl.Name,但发现它是只读的,使用它的名称不能更改。我应该注意到,表单执行一些sql并返回结果。我想要更改标签的按钮对从搜索/ SQL查询返回的每个记录执行操作。我还想指出,在SQL返回结果并且结果中的某些字段有数据之后,按钮上的初始标签由控件源属性设置。更改“ActiveControl”VBA访问按钮的名称

相关的代码在下面发布。

Dim ctlLabelName As Control 
Set ctlLabelName = Screen.ActiveControl 

'A Whole bunch of stuff is here' 

MsgBox "Hello" & ctlLabelName & "there", vbOKOnly, "Label Name"   
Me!ReprocessInvoice.Name = "processed" 
+0

试图更改名称或文本?可能是寻找.Text不是.Name属性 – Gratzy 2014-09-19 18:46:32

回答

0

你可以发布你的代码吗? 您应该可以通过使用 MyFormName.Controls(ActiveControl.Name).SomeProperty

+0

是的,我把它贴在上面。 – Dude 2014-09-19 18:58:21

0

您可以在运行时更改控件的名称。

1

访问命令按钮有一个Caption属性。这是显示给用户的文本。文本内容和颜色都可以在运行时更改。

在这个例子中,命令按钮命名为cmdTarget和它的标题文本设置为“点击我”蓝色在窗体加载。点击按钮后,文本将变为“已处理”黑色。

Option Compare Database 
Option Explicit 

Private Sub cmdTarget_Click() 
    ' do other stuff here, then change caption and text color ... 
    Me.cmdTarget.Caption = "processed" 
    Me.cmdTarget.ForeColor = vbBlack 
End Sub 

Private Sub Form_Load() 
    Me.cmdTarget.Caption = "click me" 
    Me.cmdTarget.ForeColor = vbBlue 
End Sub 

实际上改变的是按钮的名称,从cmdTarget别的东西,必须从设计模式来完成......你不能与窗体窗体视图中打开做到这一点。但我想不出从代码中改变按钮名称的好理由。