如何根据 Excel 下拉列表中的选择快速跳转到相邻单元格?

ms excelmicrosoft technologiesadvanced excel function更新于 2025/4/23 0:44:17

Microsoft Excel 的典型用户可以通过使用下拉列表来简化数据输入过程。在选定单元格中输入数据时,使用下拉菜单限制输入选项可以加快输入过程并降低出错的可能性。使用本文将介绍的 Excel 数据验证功能,您可以快速轻松地生成选项下拉列表。您可以通过命名基于特定名称的 Excel 表格的列表来在 Excel 中构建下拉列表。之后,将该列表作为要创建的数据验证下拉列表的来源。

另一方面,有时您可能希望在 Excel 中选择一个单元格,使其选择由另一个下拉列表中显示的选项决定。您可能曾经想过如何在 Excel 中根据下拉列表中的选择跳转到下一个单元格。在本教程中,您将学习如何使用 VBA 根据下拉列表中的另一个选择来选择一个单元格。

使用 VBA 根据下拉列表中的值跳转到相邻单元格

步骤 1

在我们的示例中,Excel 工作表中有日期和日期,下拉列表包含从星期一到星期日的日期。参见下图。

步骤 2

要在其中添加 VBA 代码,请同时按下 Alt 键和 F11 (Alt+F11) 键,打开 Microsoft Visual Basic for Applications 窗口。

步骤 3

然后点击 插入>模块,将弹出 模块窗口。

步骤 4

在"模块"窗口中,输入以下 VBA 代码。

Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Address <> [C2].Address Then
      Exit Sub
   Else
      JumpToCell
   End If
End Sub

Sub JumpToCell()
   Dim xRg, yRg As Range
   Dim strAddress As String
   strAddress = ""
   Set yRg = Range("A2:A8")
   For Each xRg In yRg
   'MsgBox Cell.Value
      If xRg.Value = ActiveCell.Value Then
         strAddress = xRg.Address
      End If
   Next
   If strAddress = "" Then
      MsgBox "Invalid Selection" & ActiveSheet.Name, _vbInformation, "VBOutput"
      Exit Sub
   Else
      Range(strAddress).Offset(0, 1).Select
   End If
End Sub

参见下图。

在上面的代码中,我们添加了单元格区域 A2:A8,并在"Target.Address <> [C2].Address"中,C2 是创建下拉列表的单元格。请根据需要更改这些单元格。

步骤 5

点击运行或F5运行 VBA 代码。参见下图。

运行上述 VBA 代码时,光标会根据下拉列表中的内容移动到下一个单元格。

参见下图。


相关文章


有用资源