如果交集包含字符串,则添加 multi-select ListBox

Add multi-select ListBox if intersection contains string

我之前已经实现了代码,可以根据 selection.

在我的工作表上插入一个 multi-select ListBox

我想添加更多条件以添加 ListBox 仅当 Column 7 被 selected 且同一行中的 Column 2 具有字符串 "variable".

伪代码:

If ActiveCell.Column = 7 and if ActiveCell intersection with Column 2 contains the string "variable" then

Add multi-select ListBox below active cell and 

Output selections to ActiveCell.

这是我目前正在使用的部分代码。它可以将 ListBox 添加到指定列中的每一行,而不是添加到指定列中的合格行。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, ColourArea(ActiveSheet)) Is Nothing Then
        CreateColourPopUp Target
    Else
        DeleteAllPopUps Target
    End If
End Sub

如何添加上面提到的额外条件?

Application.Intersect 方法 Returns 表示两个或多个范围的矩形交集的 Range 对象。

我不会用这个函数来处理你想做的事情。

相反,我会使用 Worksheet_SelectionChange 事件的 Target 参数和我所有的 If...Then 逻辑。

大概是这样:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub 'Makes sure no more than 1 cell is selected.
    If Not Intersect(Target, ColourArea(ActiveSheet)) Is Nothing Then 'Not sure if this is required or not but remove this If...Then block if it's not needed.
        If Target.Column = 7 And Target.Offset(0, -5).Value = "Variable" Then
            CreateColourPopUp Target
        End If
    Else 
        DeleteAllPopUps Target
End Sub

这会添加额外的 If...Then 块以在创建列表框之前检查以下条件 True

  • Target.Column = 7 检查所选单元格在第 7 列中。
  • Target.Offset(0, -5).Value = "Variable" 检查所选单元格左侧第 5 列的单元格的值是 "Variable".

有关 Offset 属性 的语法,请参阅 documentation here