下拉菜单在Excel中经常会被用到。通常,点击菜单后只显示一级菜单。如果要在单击这个菜单后,在其下面显示与这个菜单相应的子菜单的内容,利用worksheet的change事件、offset函数、match函数组成的简单代码,就能轻松实现(图1)。

首先,构造子菜单及与之相关的内容。如在A1单元格输入一个子菜单,在A2:A7输入点击这个子菜单后需要显示的内容;在B1单元格输入另一个子菜单,在B2:B3输入与这个子菜单相关的内容;其他,依此类推(图2)。

接下来,选择“公式”选项卡,点击“名称管理器”,在弹出的窗口中点击“新建”,在弹出窗口的“名称”处输入“日系”,“引用位置”处选择A2:A7。新建名称“韩系”,“引用位置”处选择B2:B3,依此类推;新建名称“临时选择”,引用位置处选择G1;新建名称“提取”,引用位置处选择I1:L1(图3)。

接着,选中G1单元格,选择“数据”选项卡,点击“数据验证”,在弹出窗口的“设置”选项卡验证条件的允许处选择“序列”,来源处选择A1:D1,这样在G1单元格就建立了下拉菜单。

选择“开发工具”选项卡,点击Visual Basic,在编辑窗口中,点击“插入→模块”,在右侧窗口输入如图所示的几行代码(图4)。

双击Sheet1,在右侧编辑窗口输入如下代码:

Private Sub Worksheet_Change(ByVal Target As Range)

Application.EnableEvents = False

Call ss

Application.EnableEvents = True

End Sub

小提示:如果窗口中没有“开发工具”选项卡,可以点击“文件→选项”,在弹出窗口中勾选“开发工具”就可以了。

最后,再选中G1单元格,设置好它的字体、字号等,点击“文件→另存为”,在弹出窗口的文件类型处选择“Excel 启用宏的工作簿(*.xlsm)”,进行保存就可以了。