1. 程式人生 > >20170405xlVBA快速錄入

20170405xlVBA快速錄入

ict works call tar ati remove form workbook object

Dim Rng As Range
Dim Arr As Variant
Dim LastCell As Range
Dim FindText As String
Dim ItemCount As Long
Dim Dic As Object
Private Sub CbOption_Change()
    FindText = CbOption.Text
    If Len(FindText) > 0 Then
        If Dic.Exists(FindText) = False Then
            Call FilterItems
        End If
    End If
End Sub
Private Sub CbOption_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Application.EnableEvents = False
    If KeyCode = 13 Then
        LastCell.Value = CbOption.Text
    End If
    Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.EnableEvents = False
    If Target.Column = 5 Then
        If Target.Rows.Count = 1 Then
            Set LastCell = Target
            Me.CbOption.Visible = True
            Me.CbOption.Left = Target.Left
            Me.CbOption.Top = Target.Top
            Me.CbOption.Width = Target.Width * 1.5
            Me.CbOption.Height = Target.Height * 1.5
            Me.CbOption.Text = ""
            Call AddItems
        End If
    Else
        Me.CbOption.Clear
        Me.CbOption.Visible = False
    End If
    Application.EnableEvents = True
End Sub
Private Sub AddItems()
    Me.CbOption.Clear
    Set Dic = CreateObject("Scripting.Dictionary")
    Set Rng = Application.ThisWorkbook.Worksheets("選項").Range("A1:A117")
    Arr = Rng.Value
    For i = LBound(Arr) To UBound(Arr)
        Key = CStr(Arr(i, 1))
        Dic(Key) = ""
        Me.CbOption.AddItem Key
    Next i
End Sub
Private Sub FilterItems()
    ItemCount = Me.CbOption.ListCount - 1
    Set Rng = Application.ThisWorkbook.Worksheets("選項").Range("A1:A117")
    Arr = Rng.Value
    For i = LBound(Arr) To UBound(Arr)
        Key = CStr(Arr(i, 1))
        If Key Like "*" & FindText & "*" Then
            Me.CbOption.AddItem Key
        End If
    Next i
    For i = ItemCount To 0 Step -1
        Me.CbOption.RemoveItem (i)
    Next i
End Sub

  

20170405xlVBA快速錄入