我创建了一个用户窗体,用于显示数据并验证显示的数据是否准确。如果不准确,前色将变成红色。因为有太多数据需要验证,所以我希望在第一页上有一个框,用于汇总所有包含红色字体的用户窗体文本框。在网上搜索后,我能够拼凑出下面的代码。 这不起作用,所以我可能还没有弄清楚这一点。
Private Sub CommandButton6_Click()
Dim totalred As Integer
Dim ctrl As Control
totalred = 0
For Each ctrl In UserForm1.Controls
If TypeOf ctrl Is TextBox Then
ctrl.DisplayFormat.ForeColor.COLOR = vbRed
totalred = totalred + 1
UserForm1.INCORRECTCOUNT.Value = totalred
End If
Next ctrl
End Sub
这甚至不会在文本框中显示任何内容。我还设置了一个 msgbox 显示,它只会显示为零。
我修改了你的代码:
Option Explicit
Private Sub CommandButton6_Click()
Dim totalred As Integer
Dim ctrl As Control
totalred = 0
For Each ctrl In UserForm1.Controls
If TypeOf ctrl Is MSForms.TextBox Then
If ctrl.ForeColor = vbRed Then
totalred = totalred + 1
End If
End If
Next ctrl
UserForm1.INCORRECTCOUNT.Value = totalred
End Sub
请注意,我正在对照
MSForms.TextBox
检查 TypeOf,我更改了检查 ForeColor 的方式,并且将更新总数移至循环之外。