动态设置用户窗体标签前景色

Dynamically Setting userform Label ForeColor

我有一个动态的用户窗体显示,当我在单独的工作表上输入信息时会自动更新。

我希望它做的是将 Deadlift 部分下出现的任何负值的前景色设置为红色。我试过使用这段代码和其他一些代码,但是到目前为止,我没有收到错误,也没有让字体更改颜色

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 标题下 5 列的标签

感谢任何帮助,我对使用 Userforms 还是很陌生

谢谢

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

好的,首先,要使这项工作正常进行,您必须select所有您希望有机会获得红色背景颜色的标签。然后,一旦你全部 selected,使用 属性 TAG (read more here)(在我的例子中,我只 selected Label2 和 Label3 有这个红色的机会backcolor。即使标题低于 0,Label1 也永远不会是红色)。标记值必须是 "RedOne"(或根据您的需要调整代码和标记值)

好的,现在是代码。此代码将检查您的用户窗体中的每个控件。然后,如果 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。

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

最后一次测试。让我们让 Label2 的值低于 0,但 label3 的值超过 0。现在,只有 Label2 的背景颜色为红色,因为它是唯一同时满足两个条件(Tag="RedOne" 和 Value<0)的标签。

希望对您有所帮助,也希望您能根据自己的需要进行调整。

只有 1 个建议。要设置标签值,只需 select 所有您想要的标签(deadlift 部分下的标签),然后键入标签值。您不需要 select 一个一个地输入 Tag 值。

让我知道这是否有效。