繁体   English   中英

如果 ListBox 包含某些单词,Microsoft Excel 用户窗体会更改单元格颜色吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM