Excel精英培训网

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

[已解决]按照模糊查询制作的另一份表格出现错误

[复制链接]
发表于 2016-6-8 07:12 | 显示全部楼层 |阅读模式
本帖最后由 流星的承诺 于 2016-6-10 21:49 编辑

在表里插入两个控件(ListBox1   TextBox1)后就在编码中模糊输入名称列表里的编码或首拼时出现错误,序号怎么样自动添加,编码输入B列改C列可以给另一份文档吗,我想学习一下怎么样制作这样的表格,看一下,B列和C列的代码有哪些不同,学习了[url=][[/url][url=]窗体控件[/url] [url=]模糊输入的例子(应网友求助答复)[/url]没弄明白怎么改列。
要求在编码下输入模糊查询后,单击鼠标就输入到单元格中,序号也添加。
B列编码输入完成后不下移,和下移的代码有哪些不同。

请大神能不能在不同处的代码文本弄到表格中,让我学习一下。错误处能注解一下。为什么按照您制作好的就没问题,但我自己制作就出现各种不同的错误。
最佳答案
2016-6-8 09:22
本帖最后由 zjdh 于 2016-6-8 09:36 编辑

模糊输入.rar (113.8 KB, 下载次数: 29)

显示错误13

显示错误13

这是错误的地方

这是错误的地方

B 列-C列.rar

67.81 KB, 下载次数: 12

两份表格学习一下,看看我能不能制作出来

模糊输入.rar

25.33 KB, 下载次数: 11

这是上次您弄好的表格,我另制作就不行。

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-6-8 08:35 | 显示全部楼层
     Private Sub Worksheet_SelectionChange(ByVal Target As Range)‘这是工作表单元格单击事件
     下面是判断区域语句:
     If Target.Column = 2 Then   '这个Target.Column就是你点击的单元格所在的列=2,就是第二列B列有效
     If Target.Row < 10 Then      '这个Target.Row 就是你点击的单元格所在的行小于10,就是第1到9行有效

回复

使用道具 举报

发表于 2016-6-8 08:44 | 显示全部楼层
本帖最后由 老司机带带我 于 2016-6-8 08:46 编辑

把Worksheet_SelectionChange事件中的
  1. Arr = Sheets("名称列表").UsedRange
复制代码
这句代码放到TextBOX1_KeyUp事件中,你上面表述的问题就不会出现了,即把Worksheet_SelectionChange事件中的这句代码删掉,然后TextBOX1_KeyUp如下,其实该代码一般不会出问题,只是当代码中断之后Arr被清了缓存,而此时你有没有去选择其他单元格,从而没有触发Worksheet_SelectionChange事件,导致Arr是空值,所以报此错误,其他没发现什么错误!
  1. Private Sub TextBOX1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
  2.     Dim I&, J%, t%, myStr$, k&, N$, P$, S$
  3.     Dim LG As Boolean, Arr1()
  4.     Me.ListBox1.Clear
  5.     myStr = UCase(Me.TextBox1.Value)
  6.     For I = 1 To Len(myStr)
  7.         If Asc(Mid$(myStr, I, 1)) < 0 Then LG = True: Exit For
  8.     Next
  9.     arr2 = Array("编 码", "名 称")
  10.     k = k + 1
  11.     ReDim Arr1(1 To 2, 1 To k)
  12.     For I = 1 To 2
  13.         Arr1(I, k) = arr2(I - 1)
  14.     Next
  15.     Arr = Sheets("名称列表").UsedRange
  16.     For I = 1 To UBound(Arr)
  17.         
  18.         S = Arr(I, 1) & " " & Arr(I, 2)
  19.         N = ""
  20.         If LG Then
  21.             N = S
  22.         Else
  23.             N = PINYIN(S)
  24.         End If
  25.         If InStr(N, myStr) Then
  26.             k = k + 1
  27.             ReDim Preserve Arr1(1 To 2, 1 To k)
  28.             For t = 1 To 2
  29.                 Arr1(t, k) = Arr(I, t)
  30.             Next
  31.         End If
  32.     Next I
  33.     If t = 0 Then Exit Sub
  34.     Me.ListBox1.List = Application.Transpose(Arr1)
  35. End Sub
复制代码
回复

使用道具 举报

发表于 2016-6-8 09:22 | 显示全部楼层    本楼为最佳答案   
本帖最后由 zjdh 于 2016-6-8 09:36 编辑

模糊输入.rar (113.8 KB, 下载次数: 29)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 06:56 , Processed in 0.322485 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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