• 20190227xlVBA辅助输入


    Dim tg As Range
    Dim FreeInput As Boolean
    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
        Debug.Print "Not tg Is Nothing  "; (Not tg Is Nothing)
        If Not tg Is Nothing Then
            tg.Value = Me.ListBox1.Value
            tg.Offset(, 1).Select
        End If
    End Sub
    
    Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
          If KeyCode = 9 Or KeyCode = 13 Then
          Debug.Print "Not tg Is Nothing  "; (Not tg Is Nothing)
                If Not tg Is Nothing Then
                      tg.Value = Me.ListBox1.Value
                      tg.Offset(, 1).Select
                End If
          Else
          
          End If
    End Sub
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Set tg = Target
        If Target.Cells.Count = 1 And (Target.Column = 3 Or Target.Column = 4 Or Target.Column = 5) And Target.Row > 3 Then
            If Not FreeInput Then
                Call ShowTwo
                Call TextboxFollow(Target)
                Call ListboxFollow(Target)
                Call ChangeListboxItems(Me.TextBox1.Text, Target.Column - 2)
            Else
                Call ShowOne
                Me.ListBox1.Clear
                Call TextboxFollow(Target)
            End If
        Else
            Call ShowNone
        End If
    End Sub
    Sub ShowTwo()
          Me.TextBox1.Visible = True
          Me.ListBox1.Visible = True
    End Sub
    Sub ShowOne()
          Me.TextBox1.Visible = True
          Me.ListBox1.Visible = False
    End Sub
    Sub ShowNone()
          Me.TextBox1.Visible = False
          Me.ListBox1.Visible = False
          Me.ListBox1.Clear
    End Sub
    Sub TextboxFollow(ByVal Rng As Range)
        With Me.TextBox1
             .Text = Rng.Value
            .Visible = True
            .Left = Rng.Left
            .Top = Rng.Top
            .Width = Rng.Width
            .Height = Rng.Height
            .Activate
        End With
    End Sub
    Sub ListboxFollow(ByVal Rng As Range)
        With Me.ListBox1
            .Clear
            .Visible = True
            .Left = Rng.Offset(0, 1).Left
            .Top = Rng.Offset(0, 1).Top
            .Width = 2 * Rng.Width
            .Height = 10 * Rng.Offset(0, 1).Height
        End With
    End Sub
    Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
        'Debug.Print KeyCode
        If KeyCode = 69 Then
            If Shift = 2 Then
                FreeInput = Not FreeInput
                If FreeInput Then
                    MsgBox "切换为任意输入状态"
                    Call Worksheet_SelectionChange(tg)
                Else
                    MsgBox "切换为提示输入状态"
                    Call Worksheet_SelectionChange(tg)
                End If
            End If
        ElseIf KeyCode = 9 Or KeyCode = 13 Then
            If Not FreeInput Then
                If Me.ListBox1.ListCount > 0 Then
                    Me.ListBox1.Activate
                    Me.ListBox1.ListIndex = 0
                End If
            Else
                If Not tg Is Nothing Then
                    tg.Value = Me.TextBox1.Text
                    tg.Offset(, 1).Select
                End If
            End If
        End If
    End Sub
    Private Sub TextBox1_Change()
          Debug.Print "TextBox1_Change"
      Call ChangeListboxItems(Me.TextBox1.Text, tg.Column - 2)
    End Sub
    Sub ChangeListboxItems(ByVal TextInput As String, ByVal DATA_COLUMN As Long)
        'If Len(TextInput) > 0 Then
            Debug.Print "ChangeListboxItems now"
            With ThisWorkbook.Worksheets("data")
                endrow = .Cells(.Cells.Rows.Count, DATA_COLUMN).End(xlUp).Row
                Me.ListBox1.Clear
                For i = 2 To endrow
                    If InStr(.Cells(i, DATA_COLUMN).Value, TextInput) > 0 Then
                        Me.ListBox1.AddItem .Cells(i, DATA_COLUMN).Value
                    End If
                Next i
            End With
        'End If
    End Sub
    

      

  • 相关阅读:
    实验 3:Mininet 实验——测量路径的损耗率
    福州大学软件工程实践个人编程作业
    实验 2:Mininet 实验——拓扑的命令脚本生成
    初识MinIO
    基础《Go学习笔记》读书笔记——函数
    Linux配置Golang 依赖包安装
    《Linux shell 脚本攻略》第1章——读书笔记
    vscode连接云服务,搭建Python远程开发
    Python多线程
    Python多进程
  • 原文地址:https://www.cnblogs.com/nextseven/p/10447393.html
Copyright © 2020-2023  润新知