我需要根据从另一个页面检索的该框中的值来更改文本框的背景颜色。正如我所知,你不能用文本框进行条件格式化,所以唯一的方法是使用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
我收到一些错误,说明需要对象,如果没有结束则会出现阻止的错误?我在论坛上找到了代码并且用户获得了成功,所以我知道它应该可行。提前致谢
答案 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
最终结果如下: