我有一个包含四个数据验证下拉列表的工作表。我想用四个依赖/级联组合框替换这四个数据验证下拉列表。我不想使用用户表单!
我在我的工作表中使用了一个组合框,我认为它只接受垂直列表。在这个线程中可能有一个解决方法:Excel VBA:为什么组合框只显示列表中的一个项目?
我还希望我的组合框是依赖/级联的。在此线程中,VBA 中可能有一个解决方案:How to list combo box data based on another combo box entry
此外,我正在使用四个数据验证下拉列表的单元格范围/地址来执行 vlookup。如何在 vlookup 公式中引用一个/两个/三个/四个组合框?
我需要以下方面的帮助:
从水平列表中的前两个组合框的选择中创建两个相关组合框。
在多个 vlookups 公式中引用四个组合框的四个值。假设我在组合框中选择瑞典,我想在我的查找公式中使用瑞典的值。我不确定组合框是如何工作的,我一边打字一边阅读它们。这个网页是一个好的开始:https : //support.office.com/en-us/article/add-a-list-box-or-combo-box-to-a-worksheet-in-excel-579e1958-f7f6 -41ae-ba0c-c83cc6e40878在这个 youtube 视频中,索引公式用于查找组合框的值:https : //www.youtube.com/watch? v=VXlKM3YaWag
对填充组合框的列表进行排序。此线程有助于按多个条件排序:Excel VBA Multi line sort by multiple criteria in Excel 2016
按住Ctrl+t将您的列表范围转换为表格。此代码适用于 ActiveX ComboBox 或 ListBox。MsFormsListName 是具有控件的工作表的名称。该表可以位于调用子例程的工作簿中的任何位置。
Sub Test()
AddTableRowAsListColumn "Table2", "ComboBox1", "Sheet2", 1
AddTableRowAsListColumn "Table2", "ListBox1", "Sheet2", 1
End Sub
Sub AddTableRowAsListColumn(TableName As String, MsFormsListName As String, MsFormsListWorksheetName As String, RowIndex As Long)
Dim MsFormsList As OLEObject
On Error Resume Next
Set MsFormsList = Worksheets(MsFormsListWorksheetName).OLEObjects(MsFormsListName)
On Error GoTo 0
If MsFormsList Is Nothing Then
MsgBox MsFormsListName & " not found on " & MsFormsListWorksheetName
Exit Sub
End If
MsFormsList.Object.list = WorksheetFunction.Transpose(Range(TableName).Rows(RowIndex).Value)
End Sub
Sub AddTableColumnToList(TableName As String, MsFormsListName As String, MsFormsListWorksheetName As String, ColumnIndex As Long)
Dim MsFormsList As OLEObject
On Error Resume Next
Set MsFormsList = Worksheets(MsFormsListWorksheetName).OLEObjects(MsFormsListName)
On Error GoTo 0
If MsFormsList Is Nothing Then
MsgBox MsFormsListName & " not found on " & MsFormsListWorksheetName
Exit Sub
End If
MsFormsList.Object.list = Range(TableName).Columns(ColumnIndex).Value
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句