[英]Microsoft Excel Userform change cell colour if ListBox contains certain words?
我目前正在制作 excel 文档来对某些产品进行分类,并显示它们包含的组件。 在我的 A Column 中,是组件,在第 1 行是我的产品。 我目前有 2 个用户 Forms,1 个用于添加新组件,另一个用于新产品。 在我的新产品表单中,我可以选择 select 列表框中第一列中的任何组件,然后将其添加到第二个列表框中。 但是我现在无法继续,我希望每个产品及其组件之间的相应单元格根据是否使用每个组件来改变颜色。 该文件是:
注意:此 excel 文档已启用宏,需要下载并运行,不能通过它可能打开的默认谷歌表格使用。
这是我的版本:
从打开工作簿时用单词填充列表框开始。 我的测试需要这个,但我假设你已经有一些文本。
Private Sub Workbook_Open()
With Feuil1.ListBox1
.AddItem "Blue"
.AddItem "Red"
.AddItem "Green"
End With
With Feuil1.ListBox2
.AddItem "Blue"
.AddItem "Red"
.AddItem "Green"
End With
End Sub
现在只需根据选定的列表框单词更改目标单元格的背景颜色
评论更新:比较 2 个列表框,如果匹配,则为单元格着色。
Private Sub ListBox1_Click()
Dim rng As Range
Set rng = Worksheets("Feuil1").Range("A1")
Select Case ListBox1.Text
Case "Blue"
rng.Interior.Color = RGB(0, 0, 255)
Case "Red"
rng.Interior.Color = RGB(255, 0, 0)
Case "Green"
rng.Interior.Color = RGB(0, 255, 0)
Case Else
End Select
ListBoxMatch
End Sub
Private Sub ListBox2_Click()
Dim rng As Range
Set rng = Worksheets("Feuil1").Range("B1")
Select Case ListBox2.Text
Case "Blue"
rng.Interior.Color = RGB(0, 0, 255)
Case "Red"
rng.Interior.Color = RGB(255, 0, 0)
Case "Green"
rng.Interior.Color = RGB(0, 255, 0)
Case Else
End Select
ListBoxMatch
End Sub
每次单击每个 listbox1 或 2 后都会触发添加一个“ListBoxMatch”子。
Private Sub ListBoxMatch()
Dim ws As Worksheet
Dim rng As Range
Set ws = ActiveWorkbook.ActiveSheet
Set rng = ws.Range("C1")
If ListBox1.List(ListBox1.ListIndex) = ListBox2.List(ListBox2.ListIndex) Then
rng.Interior.Color = RGB(0, 255, 0)
Else
rng.Interior.Color = RGB(0, 0, 0)
End If
End Sub
如果列表框匹配或不匹配,C1 将为绿色或黑色。
不匹配:
匹配:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.