求助大神,台账表格里设置有多级下拉菜单,此外还有联想输入下拉列表。两个代码能否合并同时使用,万分感谢。
附多级下拉代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim a(), i
On Error Resume Next
If Target.Count = 1 Then
If Target.Column = 3 Then
With Application.CommandBars("myCell")
.ShowPopup
End With
ElseIf Target.Column <= 5 And Target.Column >= 4 Then
ReDim a(0 To Target.Column - 2)
For i = 2 To Target.Column
If Cells(Target.Row, i - 1) <> "" Then
a(i - 2) = Cells(Target.Row, i - 1)
End If
Next
Call SubPopBar(a)
End If
End If
End Sub
联想输入的代码:
Option Explicit
Dim selRng As Range, Arr
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Me.lstIn.Visible = False
Me.txtIn.Visible = False
Arr = Sheet3.Range("A1").CurrentRegion
If Target.Count = 1 Then
If Target.Column = 6 And Target.Row > 1 Then
Set selRng = Target
With Me.txtIn
.Text = ""
.Top = Target.Top
.Left = Target.Left
.Width = Target.Width
.Height = Target.Height + 2
.Visible = True
.Activate
End With
With Me.lstIn
.Top = selRng.Top + selRng.Height
.Left = selRng.Offset(0, 1).Left
.Width = selRng.Width
.Height = selRng.Height * 5
.Visible = True
End With
End If
End If
End Sub
Private Sub txtIn_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim i As Integer
Me.lstIn.Clear
If txtIn.Value <> "" Then
For i = 2 To UBound(Arr, 1)
If InStr(1, Arr(i, 1), txtIn.Value, 1) > 0 Then
Me.lstIn.AddItem Arr(i, 1)
End If
Next i
Else
For i = 2 To UBound(Arr)
Me.lstIn.AddItem Arr(i, 1)
Next i
End If
End Sub
Private Sub lstIn_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
selRng.Value = lstIn.Value
Me.lstIn.Clear
Me.txtIn = ""
Me.lstIn.Visible = False
Me.txtIn.Visible = False
End Sub