我有一个单元格 (D3),其中有一个包含 8 个项目(所有单词)的下拉菜单。根据所选的下拉项目,我想隐藏 K 列(从开始算起 11 列)中没有该特定单词的所有其他行。
我还需要一个选项,如果从下拉菜单中选择了“所有行”,则显示所有行。
关于 VBA 与下拉菜单单元格值有什么想法吗?
另外,如何将 VBA 代码与选择下拉菜单关联起来?
谢谢您,我非常感激您的帮助。
此代码看起来正确吗? Sub PhaseTargettoStart()
Dim rMyCell As Range Set rMyCell = Range("D3") BeginRow = 6 EndRow = 301 ChkCol = 10 如果 Range("Audit!D3") = "源选择" 则 Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "Source Selection + 4 weeks" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "Step 5 + 8 weeks" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "TKO" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "OTOP" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "VP" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "Process Audit" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "PDR" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "PS" Then
Rows("6:301").EntireRow.Hidden = False
Else
If Range("Audit!D3") = "Show All" Then
Rows("6:301").EntireRow.Hidden = True
End If
End Sub
答案1
格式化下拉菜单时,您可以指定一个单元格来保存菜单中选择的项目的结果。
这被称为“单元格链接”,它将始终包含一个数字等于用户在下拉菜单列表中选择的位置。
您可以使用 INDEX() 获取菜单项的实际值(从菜单项列表中),并且本教程页面展示如何使用 VBA 隐藏/取消隐藏行。
我将帮助您开始此操作,但此网站不是“为我编写代码的网站”。您必须花时间学习如何使用 VBA 编写代码。
首先,您必须正确设置下拉列表。在下图中,我使用下拉列表(也称为组合框)设置了一些与您的类似的数据。
在这里,我已格式化控件并将输入范围(列表项)定义为 A2:A8,将单元格链接定义为 B2。当我从下拉列表中选择“显示全部”时,单元格 B2 显示 7,因为“显示全部”是列表中的第 7 项。
现在,您的任务是制作一个类似的下拉列表并将此宏分配给它:
Sub ShowHideRows()
'Set up variables
Dim ResultText As String
'Initialize variables
'If choice is "Show All", set ResultText to ABCD, a value that won't be found
'Otherwise, get the text from the list
If Range("B2") = 7 Then
ResultText = "ABCD"
Else
ResultText = Application.WorksheetFunction.Index(Range("A2:A7"), Range("B2"))
End If
MsgBox (ResultText)
End Sub
如果您所有操作都正确,那么每当您从列表中选择一个项目时,您都应该看到一条消息,显示您选择的列表项。
如果您需要了解有关如何编写和调试 VBA 或如何将 VBA 模块分配给控件的更多信息,请使用互联网并研究如何执行这些操作。
如果您遇到问题,请在这里提问。