动态设置userform Label ForeColor

时间:2018-04-09 14:43:41

标签: excel-vba dynamic label userform vba

我有一个动态的用户表单显示,并在我输入单独工作表的信息时自行更新。

Powermeet Display

我想要它做的是,在Deadlift部分下出现的任何负值都将forecolor设置为红色。我已尝试使用此代码和其他一些代码,但是,到目前为止,我没有得到错误,也没有让字体改变颜色

Sub updateForm2()

Dim lLoop As Long
For lLoop = 163 To 312

If myForm.Controls("Label" & lLoop).Value < 0 Then
    myForm.Controls("Label" & lLoop).ForeColor = RGB(255, 0, 0)
Else
  myForm.Controls("Label" & lLoop).ForeColor = RGB(0, 0, 0) 
End If

Next

End Sub

我有一个updateForm,可以根据提升的数量动态更新所有标签

Sub updateForm()
Dim wks As Worksheet
Set wks = Sheets("DeadGenerator")

'Update label values here
myForm.Label1.Caption = wks.Range("c4").Text
myForm.Label2.Caption = wks.Range("c5").Text

myForm.Label162.Caption = wks.Range("f41").Text

然后标签

myForm.Label163.Caption = wks.Range("g12").Value

myForm.Label312.Caption = wks.Range("k41").Value

是与Deadlift Heading下的5列相对应的标签

感谢任何帮助,我仍然是使用Userforms

的新手

由于

1 个答案:

答案 0 :(得分:3)

希望这个帮助。我以一种非常简单的方式回复了你的表格。刚刚添加了3个标签并将标题链接到单元格A1,B1和C1(这些值为0,-1,-2)。

enter image description here

好的,首先,要做到这一点,你必须选择所有你想要获得红色背光的标签。然后,一旦你选择了全部,使用属性TAG(read more here)(在我的例子中,我选择了Label2和Label3,你有这种红色背光的机会。即使标题低于0,Label1也永远不会变红)。标记值必须为“RedOne”(或根据需要调整代码和标记值)

enter image description here

好的,现在是代码。此代码将检查您的用户窗体中的每个控件。然后,如果TAG值为“RedOne”,它将检查标题。如果标题低于0,则会使背景变为红色。

 Dim MyLabel As control

For Each MyLabel In Me.Controls
    If MyLabel.Tag = "RedOne" Then
        If MyLabel.Caption < 0 Then
            MyLabel.BackColor = vbRed
        Else
            MyLabel.BackColor = vbWhite
        End If
    End If
Next MyLabel

现在,让我们来测试吧。请注意,只有label2和3为红色,因为值均低于0.

enter image description here

让我们使用低于0的Label1.Caption进行测试。但是Label1.Tag是空白的,所以即使值低于0,背景也将保持不变。

enter image description here

最后一次测试。让Label2值低于0,但label3值超过0.现在,只有Label2变为红色背光,因为它是唯一符合这两个条件的标签(Tag =“RedOne”和Value&lt; 0)。

enter image description here

希望这会有所帮助,我希望您能够根据自己的需要进行调整。

只有1个建议。要设置标记值,只需选择所需的所有标记( deadlift 部分下的标签),然后键入标记值。您无需逐个选择并逐个键入标记值。

如果有效,请告诉我。