Excel根据值

时间:2015-06-03 15:32:15

标签: excel vba textbox

我需要根据从另一个页面检索的该框中的值来更改文本框的背景颜色。正如我所知,你不能用文本框进行条件格式化,所以唯一的方法是使用VBA。我不能为我的生活弄清楚如何设置代码来使这项工作。我尝试打开VBA查看器并使用以下代码:

Private Sub TextBox1_Change()

If TextBox1.Value = "" Or Not "1" Or Not "2" Or Not "3" Then _

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

If TextBox1.Value = "1" Then TextBox1.BackColor = RGB(255, 0, 0)

If TextBox1.Value = "2" Then TextBox1.BackColor = RGB(0, 255, 0)

If TextBox1.Value = "3" Then TextBox1.BackColor = RGB(0, 0, 255)

End Sub

我收到一些错误,说明需要对象,如果没有结束则会出现阻止的错误?我在论坛上找到了代码并且用户获得了成功,所以我知道它应该可行。提前致谢

3 个答案:

答案 0 :(得分:0)

这可以帮到你:

Private Sub TextBox1_Change()

    With Sheets("Sheet3").OLEObjects("TextBox1").Object
        Select Case .Value
            Case Is = vbNullString 'same as ""
                .BackColor = RGB(0, 0, 0)
            Case Is = 1
                .BackColor = RGB(255, 0, 0)
            Case Is = 2
                .BackColor = RGB(0, 255, 0)
            Case Is = 3
                .BackColor = RGB(0, 0, 255)
            Case Else
                .BackColor = RGB(126, 126, 126)
        End Select
    End With

End Sub

答案 1 :(得分:0)

您收到了一个Object required错误,因为您将代码放在Textbox1不存在的对象中。将代码放入用户表单或工作表中,其中有一个名为" Textbox1"的文本框。

解决"如果没有结束如果"问题改变了以下内容:

If TextBox1.Value = "" Or Not "1" Or Not "2" Or Not "3" Then _

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

对此:

If TextBox1.Value = "" Or Not "1" Or Not "2" Or Not "3" Then _
TextBox1.BackColor = RGB(0, 0, 0)

我个人会使用如下所示的Select Case语句,但除了那一行之外你还有什么工作。

Private Sub TextBox1_Change()

    Select Case TextBox1.Value
        Case "1": TextBox1.BackColor = RGB(255, 0, 0)
        Case "2": TextBox1.BackColor = RGB(0, 255, 0)
        Case "3": TextBox1.BackColor = RGB(0, 0, 255)
        Case Else: TextBox1.BackColor = RGB(255, 255, 255)
    End Select

End Sub

答案 2 :(得分:0)

我假设您使用的是用户表单,您需要使用文本框根据其中的信息更改颜色。

我目前正在做同样的事情,我已经提出了以下解决方案:

对于UserForm1,其中列出了4个文本框1 - 4

Private Sub Textbox1_Change()
 If TextBox1.Text = "A" Then
TextBox1.BackColor = RGB(0, 32, 96)
 ElseIf TextBox1.Text = "B" Then
TextBox1.BackColor = RGB(0, 112, 192)
  ElseIf TextBox1.Text = "C" Then
TextBox1.BackColor = RGB(189, 215, 238)
  ElseIf TextBox1.Text = "D" Then
TextBox1.BackColor = RGB(0, 176, 240)
End If
End Sub

Private Sub Textbox2_Change()
 If TextBox2.Text = "A" Then
TextBox2.BackColor = RGB(0, 32, 96)
TextBox2.Font.Color = RGB(0, 0, 0)
 ElseIf TextBox2.Text = "B" Then
TextBox2.BackColor = RGB(0, 112, 192)
  ElseIf TextBox2.Text = "C" Then
TextBox2.BackColor = RGB(189, 215, 238)
  ElseIf TextBox2.Text = "D" Then
TextBox2.BackColor = RGB(0, 176, 240)
End If
End Sub

Private Sub Textbox3_Change()
 If TextBox3.Text = "A" Then
TextBox3.BackColor = RGB(0, 32, 96)
 ElseIf TextBox3.Text = "B" Then
TextBox3.BackColor = RGB(0, 112, 192)
  ElseIf TextBox3.Text = "C" Then
TextBox3.BackColor = RGB(189, 215, 238)
  ElseIf TextBox3.Text = "D" Then
TextBox3.BackColor = RGB(0, 176, 240)
    End If
End Sub

Private Sub Textbox4_Change()
 If TextBox4.Text = "A" Then
TextBox4.BackColor = RGB(0, 32, 96)
 ElseIf TextBox4.Text = "B" Then
TextBox4.BackColor = RGB(0, 112, 192)
  ElseIf TextBox4.Text = "C" Then
TextBox4.BackColor = RGB(189, 215, 238)
  ElseIf TextBox4.Text = "D" Then
TextBox4.BackColor = RGB(0, 176, 240)
    End If
End Sub

最终结果如下:

Formatting example