Excel VBA在USERFORM上更改颜色值

时间:2014-02-21 04:38:01

标签: excel vba excel-vba

我想知道如何根据值更改值或文本框的颜色。例如,如果获得“F”我希望此值在用户表单上以任何方式转为RED或文本框。

Here is a example of where i want to use it or how i would like to use it.

非常感谢你。

Private Sub cmdAceptar_click()
Dim n1 As Double, n2 As Double, n3 As Double, n4 As Double
Dim promedio As Integer

n1 = Val(txtn1): n2 = Val(txtn2)
n3 = Val(txtn3): n4 = Val(txtn4)
promedio = CInt((n1 + n2 + n3 + n4) / 4)
txtPromedio = Str(promedio)

If promedio >= 90 And promedio <= 100 Then
    txtPuntuacion = "A"
ElseIf promedio >= 80 And promedio <= 89 Then
    txtPuntuacion = "B"
ElseIf promedio >= 70 And promedio <= 79 Then
    txtPuntuacion = "C"
ElseIf promedio >= 60 And promedio <= 69 Then
    txtPuntuacion = "D"
ElseIf promedio >= 0 And promedio <= 59 Then
    txtPuntuacion = "F"
Else: MsgBox "Error de datos", vbCritical, "Mensaje"
End If

End Sub

1 个答案:

答案 0 :(得分:1)

将TextBox的颜色更改为红色:

UserForm1.TextBox1.BackColor = RGB(255,0,0)

将TextBox的文本颜色更改为红色:

UserForm1.TextBox1.ForeColor = RGB(255,0,0)

更新:完整解决方案(假设 txtPuntuacion 是TextBox):

Private Sub cmdAceptar_click()
    Dim n1 As Double, n2 As Double, n3 As Double, n4 As Double
    Dim promedio As Integer
    Dim sGrade As String

    n1 = Val(txtn1): n2 = Val(txtn2)
    n3 = Val(txtn3): n4 = Val(txtn4)
    promedio = CInt((n1 + n2 + n3 + n4) / 4)
    txtPromedio = Str(promedio)

    Select Case promedio
        Case 90 To 100: sGrade = "A"
        Case 80 To 89:  sGrade = "B"
        Case 70 To 79:  sGrade = "C"
        Case 60 To 69:  sGrade = "D"
        Case 0 To 59:   sGrade = "F"
        Case Else
            MsgBox "Error de datos", vbCritical, "Mensaje"
            Exit Sub
    End Select
    txtPuntuacion.Value = sGrade
    If sGrade = "F" Then
        txtPuntuacion.ForeColor = RGB(255, 0, 0)
    Else
        txtPuntuacion.ForeColor = RGB(0, 0, 0)
    End If
End Sub