我需要添加组合框(ActiveX控件)或数据验证作为下拉列表。 我有15个值的范围,如高,低,中等... 创建了名为“priorityvalue”的命名范围。
我可以使用组合框创建一个下拉列表,方法是在属性或数据验证列表中的ListFillRange下添加命名范围,方法是给出命名范围。
但是我担心,我需要下载58cells的列表,其中包含上面提到的相同值。为所有细胞创建组合框的繁琐工作。请在这里建议我更好的选择。
数据验证列表可达到此目的。但是,它使用户滚动每个单元格的下拉列表,而不像它没有输入框的组合框..
请建议
答案 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
注意:有一些警告。上面的代码将重置工作表中的所有组合框(另外,我已将工作表设置为工作簿中的第一个工作表,您可能希望使其动态化)。如果您不希望它重置所有组合框并且仅执行通过该功能添加的组合框,则可以使用名称格式过滤要清除的组合格
希望这有帮助