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

时间:2016-09-09 11:26:41

标签: vba excel-vba combobox macros activex

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

我可以使用组合框创建一个下拉列表,方法是在属性或数据验证列表中的ListFillRange下添加命名范围,方法是给出命名范围。

但是我担心,我需要下载58cells的列表,其中包含上面提到的相同值。为所有细胞创建组合框的繁琐工作。请在这里建议我更好的选择。

数据验证列表可达到此目的。但是,它使用户滚动每个单元格的下拉列表,而不像它没有输入框的组合框..

请建议

2 个答案:

答案 0 :(得分:0)

试试这个:

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

注意:使用要添加ComboBox的单元格区域调用上述函数。您将不得不更改数组以使用您想要的值(您可以在那里键入它们或给出现有值的范围)

答案 1 :(得分:0)

将以下代码粘贴到' 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

注意:有一些警告。上面的代码将重置工作表中的所有组合框(另外,我已将工作表设置为工作簿中的第一个工作表,您可能希望使其动态化)。如果您不希望它重置所有组合框并且仅执行通过该功能添加的组合框,则可以使用名称格式过滤要清除的组合格

希望这有帮助

相关问题