网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月16日漏签0天
vba吧 关注:17,092贴子:66,944
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 11回复贴,共1页
<<返回vba吧
>0< 加载中...

窗体查询中如何使用包含关键字查询?

  • 只看楼主
  • 收藏

  • 回复
  • 伤害爆表
  • 后起之秀
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
问题:窗体有textbox1、textbox2,当查询的值内容不完整或不包含时,程序报错
如:输入值‘老师’。数据源值‘王老师’、‘张老师’,程序运行时则报错,输入值=张老师,时输出1条内容
Private Sub CommandButton1_Click()
If TextBox1.Value <> "" Then
If TextBox2.Value <> "" Then
Dim aData, aRes, aRef, s
Dim i As Long, j As Long, k As Long
aData = Worksheets("来料检验汇总").Range("c1").CurrentRegion
ReDim aRes(1 To UBound(aData), 1 To UBound(aData, 2))
aRef = Array(TextBox1.Value)
For i = 1 To UBound(aData)
If aData(i, 4) = TextBox2.Value Then '判断条件二
For Each s In aRef '判断是否包含关键字
If InStr(aData(i, 1), s) Then
k = k + 1
For j = 1 To UBound(aData, 2)
aRes(k, j) = aData(i, j)
Next
Exit For '退出循环
End If
Next
End If
Next
Worksheets("查询表").Select
Cells.ClearContents
Range("a2").Resize(1, UBound(aData, 2)) = aData '读取标题
Range("a3").Resize(k, UBound(aData, 2)) = aRes '查询结果
MsgBox "查询完成"
Unload Me
Exit Sub
Else
End If
MsgBox "供应商不能为空"
Exit Sub
Else
End If
MsgBox "物料名称不能为空"
End Sub


  • DwcCC
  • 人中龙凤
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
很大概的看了下
看到这2句
aRef = Array(TextBox1.Value)
aRef请问他有几个值?
即便Textbox1的Multiline属性设置成True
然后写入2行
最终aRef还是只有一个值
那么又何必用下一句? In aRef?
For Each s In aRef
另外程序报错,错在哪一句,错误提示是什么?
自己会调试么?
解决问题需要3个内容
1.错在哪一句
2.错误提示是什么?
3.相关数据
举个简单例子
ReDim aRes(1 To UBound(aData), 1 To UBound(aData, 2))
这句报错
提示类型不匹配
相关数据:
因为是根据aDate 来定义 aRes的数组
所以先看 aDate是否 是个数组
如果aDate不是个数组
那就就看相关代码
aData = Worksheets("来料检验汇总").Range("c1").CurrentRegion
看看C1 是不是独立的周边没有数据的单元格
当C1 是独立的 周边没有其他数据的时候
aData = Worksheets("来料检验汇总").Range("c1").CurrentRegion
就相当于 aData = Range("c1").value 只有一个值 并不是数组


2026-01-16 10:25:28
广告
不感兴趣
开通SVIP免广告
  • 伤害爆表
  • 后起之秀
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
数据大概有10列200行


  • ISD_狮子座
  • 初涉江湖
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
首先,我没认真看你的程序写的是什么,只是大概看了一下你的查询原理。然后,如果数据是在工作表中,不管是完全匹配还是部份匹配,直接使用range.find会比循环要快得多及方便得多,如果会有不匹配的情况,那直接先SET RNG = RANGE.find("查询内容")然后判断RNG是否NOTHING就可以了。


  • 贴吧用户_5bKKRyV
  • 初涉江湖
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
文本框的值只有个,如何写入数组?,又如何循环?


  • 静待花开wfy
  • 武林新贵
    8
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
=是完全相等的比较,换成instr为部分匹配去比较。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 11回复贴,共1页
<<返回vba吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示