|
本帖最后由 缔造者 于 2014-10-24 13:42 编辑
“查询”工作表代码:
此代码有错误- Private Sub Worksheet_SelectionChange(ByVal Target As Range)
- If Target.Count > 1 Then Exit Sub
- If Target.Address <> "$B$3" And Target.Address <> "$C$3" Then Exit Sub
- Dim arr, k
- Dim i As Long
- Dim d As Object, dic As Object
- Set d = CreateObject("scripting.dictionary")
- Set dic = CreateObject("scripting.dictionary")
- arr = Worksheets("数据").Range("a3").CurrentRegion
- For i = 3 To UBound(arr) - 1
- If Not d.exists(arr(i, 1)) Then
- d(arr(i, 1)) = arr(i, 1)
- dic(arr(i, 1)) = arr(i, 2)
- Else
- dic(arr(i, 1)) = dic(arr(i, 1)) & "," & arr(i, 2)
- End If
- Next i
- If Target.Address = "$B$3" Then
- Range("c3").Validation.Delete
- Range("c3").ClearContents
- With Range("b3").Validation
- .Delete
- .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
- Operator:=xlBetween, Formula1:=Join(d.keys, ",")
- End With
- ElseIf Target.Address = "$C$3" Then
- If dic.exists(Range("b3").Value) Then k = dic(Range("b3").Value)
- With Range("c3").Validation
- .Delete
- .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
- Operator:=xlBetween, Formula1:=k
- End With
- End If
- End Sub
复制代码 |
|