我有一个动态的用户表单显示,并在我输入单独工作表的信息时自行更新。
我想要它做的是,在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
的新手由于
答案 0 :(得分:3)
希望这个帮助。我以一种非常简单的方式回复了你的表格。刚刚添加了3个标签并将标题链接到单元格A1,B1和C1(这些值为0,-1,-2)。
好的,首先,要做到这一点,你必须选择所有你想要获得红色背光的标签。然后,一旦你选择了全部,使用属性TAG(read more here)(在我的例子中,我选择了Label2和Label3,你有这种红色背光的机会。即使标题低于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&lt; 0)。
希望这会有所帮助,我希望您能够根据自己的需要进行调整。
只有1个建议。要设置标记值,只需选择所需的所有标记( deadlift 部分下的标签),然后键入标记值。您无需逐个选择并逐个键入标记值。
如果有效,请告诉我。