|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
各位大神,我想开发一个VBA的小软件,用来查询螺纹规格,其中有以下代码:
Sub Worksheet_SelectionChange(ByVal Target As Range) '多级菜单的方法
Application.EnableEvents = False
Application.ScreenUpdating = False
On Error Resume Next
'实现在第3行的点击效果
If Target.Row <> 3 Then GoTo end1
Application.CellDragAndDrop = False '若禁止工作表内拖拽,只需该代码
If Target.Count > 1 Then GoTo end1 '选择的单元格大于2个,就退出
If Target.Column <> 4 Then GoTo end1
Sheets("基础数据").Activate
row2 = Sheets("基础数据").Cells(Rows.Count, "b").End(xlUp).Row
'MsgBox row2
myarr = Sheets("基础数据").Range("a2:b" & row2) '将所有菜单装入数组
'MsgBox UBound(myarr)
If UBound(myarr) < 3 Then GoTo end1 '如果菜单个数少于3个就退出
Set myDic = CreateObject("Scripting.Dictionary") '建立一级菜单字典
Set mytwoDic = CreateObject("Scripting.Dictionary") '建立二级菜单字典
Sheets("螺纹规格查询").Activate
If Target.Column = 4 And Target.Offset(0, -1) <> "" Then
For i = 1 To UBound(myarr)
t = myarr(i, 1)
If t <> "" Then T1 = t
If t = "" Then t = T1
If t = Target.Offset(0, -1) Then
mytwoDic(myarr(i, 2)) = myarr(i, 2) '将菜单值写入键
End If
Next
'二级菜单实现
With Target.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Join(mytwoDic.Keys, ",")
End With
End If
end1: Set myDic = Nothing
Set mytwoDic = Nothing
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.CellDragAndDrop = True
End Sub
把它放在“螺纹规格查询”表上,一切正常,公称直径一栏可以出现下拉菜单,但关闭后重新打开,就会出现以下报警:
点“是”后,这段代码不在原表上,而是在自动产生的一个sheet6的表上了,这个似乎是工作簿?“螺纹规格查询表“上没有这段代码,无法实现二级菜单了,不知道是什么原因?请大神帮助,谢谢!
|
|