Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2091|回复: 6

[已解决]麻烦老师帮我看看这样的代码

[复制链接]
发表于 2015-7-27 15:19 | 显示全部楼层 |阅读模式
本帖最后由 love_liwu 于 2015-7-27 22:42 编辑

Public Arr
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column <> 6 Or Target.Row < 6 Then GoTo 100
Dim d, i&, kc
Set d = CreateObject("Scripting.Dictionary")
Arr = Sheet2.[F1].CurrentRegion
For i = 1 To UBound(Arr)
    d(Arr(i, 1)) = ""
Next
kc = d.keys
'Target.Resize(1, 13).ClearContents
            With Me.TextBox1
                .Visible = True
                .Top = Target.Top
                .Left = Target.Left
                .Width = Target.Width
                .Height = Target.Height + 5
                .Activate
            End With
            With Me.ListBox1
                .Visible = True
                .Top = Target.Top
                .Left = Target.Left + Target.Width
                .Height = Target.Height * 10
            End With
            With Me.ListBox1
                .List = kc
            End With
            Exit Sub
100:
            Me.ListBox1.Clear
            Me.TextBox1 = ""
            Me.ListBox1.Visible = False
            Me.TextBox1.Visible = False

End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim r1
    ActiveCell.Value = ListBox1.Value
    Me.ListBox1.Clear
    Me.TextBox1 = ""
    Me.ListBox1.Visible = False
    Me.TextBox1.Visible = False
End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Dim i As Integer
    Dim Language As Boolean
    Dim myStr As String
    Me.ListBox1.Clear
    With Me.TextBox1
        For i = 1 To Len(.Value)
            If Asc(Mid$(.Value, i, 1)) > 255 Or Asc(Mid$(.Value, i, 1)) < 0 Then
                Language = True
                myStr = myStr & Mid$(.Value, i, 1)
            Else
                myStr = myStr & LCase(Mid$(.Value, i, 1))
            End If
        Next
    End With
    With Sheet2
        Arr = .[F1].CurrentRegion
        If myStr = "" Then Exit Sub
        For i = 2 To UBound(Arr)
            If Language <> True Then
                dm = py(Arr(i, 1))
                If InStr(dm, myStr) > 0 Then
                    Me.ListBox1.AddItem Arr(i, 1)
                End If
            Else
                If InStr(Arr(i, 1), myStr) > 0 Then
                    Me.ListBox1.AddItem Arr(i, 1)
                End If
            End If
        Next
    End With

End Sub


我的问题是:
优惠性质代码及名称(具体可在sheet2表找寻)这一列可根据实际情况增行,点击F6弹出文本框模糊搜索,假设有内容则在LISTBOX出现,双击LISTbox选项即可返回到F6。可以增行或减行,增行时候F7、F8等依次类推。无论是增行还是减行,F5和公司签章那个单元格不能出现搜索框。







最佳答案
2015-7-27 18:45
顾客欠货款还款优惠备案登记表.rar (17.64 KB, 下载次数: 9)

顾客欠货款还款优惠备案登记表.rar

5.62 KB, 下载次数: 6

发表于 2015-7-27 18:45 | 显示全部楼层    本楼为最佳答案   
顾客欠货款还款优惠备案登记表.rar (17.64 KB, 下载次数: 9)
回复

使用道具 举报

 楼主| 发表于 2015-7-27 22:36 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2015-7-28 09:03 | 显示全部楼层
zjdh 发表于 2015-7-27 18:45

老师,您好,发现一个问题,每次打开excel,直接在F6输入,listbox没有内容。需要点击其他单元格后再点击F6才有选项,麻烦您看看。
回复

使用道具 举报

发表于 2015-7-28 09:37 | 显示全部楼层
这本身就是点击触发的,这不是问题。
回复

使用道具 举报

 楼主| 发表于 2015-7-28 09:41 | 显示全部楼层
zjdh 发表于 2015-7-28 09:37
这本身就是点击触发的,这不是问题。

好的,谢谢。

回复

使用道具 举报

发表于 2015-7-28 10:18 | 显示全部楼层
谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-24 23:01 , Processed in 0.486890 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表