返回目录:excel表格制作
在前面VBA那部分咱们已经学过了表单单控跟ActiveX控件的区别,也知道了ActiveX控件通过编程如何应用,现在咱们就用ActiveX控件里面的组合框来做个二级菜单,看看效果如何。
请看下面效果图
具体的操作方法和步骤:
准备好相关的数据源
在要做下拉菜单的表格里插入2个ActiveX控件的组合框,且分别命名为品牌和品类。
只有当鼠标单击品类列时,才会出现组合框的实现。这里使用工作表中的click事件。
代码如下:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Me.品类
If Target.Column = 5 Then
.Visible = True
Else
.Visible = False
End If
End Sub
点击品类列时组合框和点击的单元格大小位置相同
代码如下:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Me.品类
If Target.Column = 5 Then
.Visible = True
.Top = Target.Top
.Left = Target.Left
.Width = Target.Width
.Height = Target.Height
Else
.Visible = False
End If
End Sub
设置组合框的相关数据序列范围
平时大家在插入组合框后,通过ListFillRang可以设置序列区域,这样就可以实现下拉框里有内容。
设置后如下:
不过这里的序列区一定要竖向的,横向不行。但咱们的数据源品类是横向的,因此我们只能通过循环方式来将每一个品类通过AddItem来写到序列里。
代码如下:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Me.品类
If Target.Column = 5 Then
.Visible = True
.Top = Target.Top
.Left = Target.Left
.Width = Target.Width
.Height = Target.Height
For Each Rng In Sheets("分类").Range("a1", Sheets("分类").[a1].End(xlToRight))
.AddItem Rng.Value
Next
Else
.Visible = False
End If
End Sub
这样当我们点击组合框时就会出现组合框了,内容也出来了,不过点击后相关的内容是写不了单元格里去的,因此我们要利用组合框来完成。
右键单击组合框,查看代码,在里面写代码:
Private Sub 品类_Click()
ActiveCell = Me.品类.Value
End Sub
同上,品种组合框相同处理
组合框所在的表中的完整代码如下:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Me.品类
If Target.Column = 5 Then
.Visible = True
.Top = Target.Top
.Left = Target.Left
.Width = Target.Width
.Height = Target.Height
For Each Rng In Sheets("分类").Range("a1", Sheets("分类").[a1].End(xlToRight))
.AddItem Rng.Value
Next
Else
.Visible = False
End If
End With
With Me.品牌
If Target.Column = 6 Then
Set Rng1 = Sheets("分类").Range("1:1").Find(Target(1, 0).Value)
.ListFillRange = "分类!" & Range(Rng1(2, 1).Address, Rng1.End(xlDown).Address).Address
.Top = Target.Top
.Left = Target.Left
.Width = Target.Width
.Height = Target.Height
.Visible = True
Else
.Visible = False
End If
End With
End Sub
两个组合框中的代码如下:
品种组合框:
Private Sub 品类_Click()
ActiveCell = Me.品类.Value
End Sub
品类组合框:
Private Sub 品牌_Click()
ActiveCell = Me.品牌.Value
End Sub
这样,经过上面这些步骤后,我们就能做好二级菜单了。
更多Excel教程、职场生存法则,请了解更多