在多个单元格中添加组合框

Adding combo box across multiple cells

我需要添加组合框(ActiveX 控件)或数据验证作为下拉列表。 我有 15 个值的范围,例如高、低、中等... 已创建名为 "priorityvalue" 的命名范围。

我可以通过在属性中的 ListFillRange 下添加命名范围来使用组合框创建下拉列表,或者通过提供命名范围来创建数据验证列表。

但我担心的是,我需要下拉列表包含 58 个具有上述相同值的单元格。为所有单元格创建组合框是一项繁琐的工作。请在这里建议我更好的选择。

数据验证列表达到目的。但是,它使用户可以滚动浏览每个单元格上的下拉列表,这与没有输入框的组合框不同..

请推荐

试试这个:

Sub AddComboBoxToColumns(ByVal oRange As Excel.Range)

    Dim oOLE As OLEObject
    Dim oCell As Object

    ' Loop through all the cells in the range
    For Each oCell In oRange.Cells

        ' Add ComboBox in each cell
        With oCell

            Set oOLE = .Parent.OLEObjects.Add("Forms.combobox.1")
            oOLE.Top = .Top
            oOLE.Left = .Left
            oOLE.Width = .Width
            oOLE.Height = .Height
            oOLE.Name = "ComboBox" & .Address(False, False)
            oOLE.Object.List = Array("Test1", "Test2")

        End With

    Next

    Set oOLE = Nothing

End Sub

注意:使用要添加组合框的单元格区域调用上述函数。您将必须更改数组以使用您想要的值(您可以在其中键入它们或给出现有值所在的范围)

将以下代码粘贴到“ThisWokbook

Private Sub Workbook_Open()

    Dim oItem As Object

    For Each oItem In Worksheets(1).OLEObjects

        If TypeName(oItem.Object) = "ComboBox" Then

            If Len(oItem.Object.Value) > 0 Then
                oItem.Object.Value = ""
            End If

        End If

    Next

    Set oItem = Nothing

End Sub

注意:对此有一些警告。上面的代码将重置工作表中的所有组合框(另外,我已将工作表设置为工作簿中的第一个工作表,您可能希望使其动态化)。如果你不希望它重置所有的组合框,只做你通过函数添加的组合框,你可以使用名称格式来过滤你想要清除的那些

希望这有帮助