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