码迷,mamicode.com
首页 > 编程语言 > 详细

20170405xlVBA快速录入

时间:2017-07-07 10:16:44      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:scripting   items   ict   his   int   ksh   cbo   next   count   

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快速录入

标签:scripting   items   ict   his   int   ksh   cbo   next   count   

原文地址:http://www.cnblogs.com/nextseven/p/7129198.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!