vba 怎么实现在excel中搜索窗体textbox中的内容

vba 怎么实现在窗体textbox中输入内容,然后点击窗体按键,可以在sheet1的b列搜索含有textbox内容(含有,不是要完全一样)的单元格并返回?

参考如下问答:

如何让textbox中输入信息,在表格中搜索到,并实时显示在listbox中

功能描述如下,如附件中frame图所示,在textbox中输入一个人名,实时在一个表格(如附件表格图所示)中搜索此人名,并将搜索结果放到frame中的listbox中,搜索结果包括姓名,班级,性别。实时显示就是在textbox中输入后马上执行搜索并显示的任务,应该是在textbox的change方法中写代码。

根据textbox1里的值去查找,应该可以不用考虑使用字典的


Private Sub TextBox1_Change()
ListBox1.Clear
Set Rng = Sheets(1).Columns(2).Find(TextBox1.Text, lookat:=xlWhole)
If Not Rng Is Nothing Then
ListBox1.AddItem (Rng)
For j = Rng.Row + 1 To Sheets(1).Cells(Rows.Count, 2).End(3).Row
If Sheets(1).Cells(j, 2) = Rng Then
ListBox1.AddItem (Rng)
End If
Next j
End If
End Sub
根据textbox1的值查找    

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-03-30

这个还是挺简单的.如果你刚学VBA,可以直接用FOR循环遍历单元格,如何满足要求就显示出来.只是这样搜索速度会慢点,如果将整个工作表赋值给一个数组变量后,在数组中进行检索的话,速度将会大大提高
下图是我自己做的一个用来查询重量的窗体

第2个回答  2019-03-29

搜索内容很简单,你是想以什么样的形式返回?

搜索的话遍历行就可以,参考下面的代码

listbox1.Clear
listbox1.AddItem("库位    在库数量")

 For j = 1 To 500 Step 1
            If Trim(thisWs.Cells(i, 1)) = Trim(textbox1)  and  instr(1,thisWs.Cells(i, 2),textbox2) >0 Then
                'thisWs.Cells(i, 2).Interior.ColorIndex = 3 '单元格颜色改成红色
                listbox1.AddItem(thisWs.Cells(i, 3)&"    "&thisWs.Cells(i, 4))'将符合条件的数据加入列表
                'Exit For 允许多条结果时不要这个
            End If
Next j

这段代码比较了第一列和textbox1相等,且第二列包含textbox2,变量名自己根据实际情况修改,遍历的行数也可以自己调整。

追问

谢谢大神,送花~
我想以listbox形式返回,listbox1中第一行固定格式为“库位”,“在库数量”,比如我搜“钻头”,“1.6”,在listbox1中第二行(第一行库位的下面)可以出现:AA1,“在库数量”下面出现24;
这个样子,如果在excel中搜索1.6不止1个数据,那么 在listbox的第3行,第4行......都以第二行的数据格式返回出来;

追答

代码又改了一下,listbox里增加数据就可以了。

追问

谢谢大神,很简练,有用。采纳了

本回答被提问者采纳
第3个回答  2019-03-30
Private Sub CommandButton1_Click()
Dim Rng As Range
With Application.Intersect(Sheet1.UsedRange, Sheet1.Range("A:A"))
    Set Rng = .Find(What:=Me.TextBox1.Value, LookIn:=xlValues, LookAt:=xlPart)
    If Not Rng Is Nothing Then
        firstAddress = Rng.Address
        Do
            If InStr(1, Rng.Offset(0, 1).Value, Me.TextBox2.Value, vbBinaryCompare) > 0 Then
                Sheet1.Activate
                Rng.Select
                Exit Sub
            End If
            Set Rng = .FindNext(Rng)
        Loop While Not Rng Is Nothing And Rng.Address <> firstAddress
    End If
End With
MsgBox "未找到"
End Sub

第4个回答  2019-03-30

代码如下:

Private Sub CommandButton1_Click()
Dim MyRows As Integer
Dim MyFind As Boolean
With Excel.Application.ActiveWorkbook.Sheets("Sheet1")
   MyFind = False
   MyRows = 1
   Do While .Cells(MyRows, 1).Value <> ""
      If .Cells(MyRows, 1).Value = TextBox1.Text And .Cells(MyRows, 2).Value = TextBox2.Text Then
          MsgBox "你要的数据在第" & MyRows & "行!"
          MyFind = True
          Exit Do
      End If
      MyRows = MyRows + 1
   Loop
   If Not MyFind Then MsgBox "找不到你要的数据!"

End With
  
End Sub

运行时界面:

单击按钮后显示:

vba 怎么实现在excel中搜索窗体textbox中的内容
功能描述如下,如附件中frame图所示,在textbox中输入一个人名,实时在一个表格(如附件表格图所示)中搜索此人名,并将搜索结果放到frame中的listbox中,搜索结果包括姓名,班级,性别。实时显示就是在textbox中输入后马上执行搜索并显示的任务,应该是在textbox的change方法中写代码。根据textbox1里的值...

excel vba 获取文本框的值 怎么获取啊?
1)如果是表单控件:右键控件》设置控件格式》控制》链接单元格 2)如果是ACTIVEX控件,选中控件,打开VBE,在控件属性LINKEDCELL里边输入要链接的单元格。当然可以通过代码实现更多的操作。希望对你有帮助。

在excel中的VBA里如何使用批量读取控件(如文本框)中的数据。
使用VBA获取工作表里边文本框、图形的文本数据时,在不确定文本框、图形数量的情况下,可以使用“For Each……In……Next”对工作表里面的每一个文本框、图形进行访问,然后使用“.TextFrame2.TextRange.Text”获取里边的文本数据写入单元格。VBA程序如下截图,shp为工作表Sheet1里边所有图形中的一个(每...

vba (excel)怎么打开一个txt文件显示在textbox中,或者将textbox中内 ...
新建一个excel工作薄,打开VBA编辑器,插入一个用户窗体,在窗体中放一个textbox,两个commandbutton,然后打开窗体代码窗口粘贴以下代码 Private Sub CommandButton1_Click()'读入一个ANSI编码的文本文件,并显示在textbox中 With Application.FileDialog(msoFileDialogOpen)If .Show Then ipath = .SelectedItems...

Excel Vba 如何将单元格的值,同步显示在窗体中的LABEL或TEXTBOX中?
1、首先,在电脑中找到并打开Excel,在工具栏找到开发工具。2、然后,在开发工具栏下点开VisualBasic。3、然后,使用lable控件来来显示变量内容,接着双击按钮1进入按钮1的代码编写。4、在按钮1中输入:UserForm1.Label1.Caption = a。5、然后,回到form,点击运行窗体。6、最后,lable位置发生了变化,...

...excel vba activex 控件 textbox 中的内容通过按钮导入到指定单元...
读取输入的姓名,然后在B列查找输入的姓名,找到就记下行号,更新信息。没有找到,就在最后一行的下一行添加数据。Private Sub CommandButton1_Click() 'Sheet1 是输入信息的工作表,Sheet2是存放数据的工作薄。 Dim lngRow As Variant, strName As String strName = Sheet1.TextBox2.Text...

Excel 如何让窗体中的文本框自动显示指定单元格数据
1.Alt+F11,打开VBA编辑界面,双击左侧Microsoft Excel对象下的“Sheet1”,确保程序是在sheet1中执行 2.点击下图“通用”右侧的下拉箭头,选择worksheet 3.此时,代码编辑区,自动出现两串代码,如下图所示:4.补充写上一句代码“Range("h1")=Target.text"5.关闭VBA界面,返回Sheet1,点击任意单元格...

如何在EXCEL中用VBA读取一个文本框(非控件)的字符
右击文本框,选“指定宏(N)...",新建一个过程,注意文本框的名字,代码如下:本代码在Excel2010中测试成功

VBA EXCEL通过textbox查询表格中的数据,是否查找到均在label中...
查找按钮的代码:Private Sub CommandButton1_Click()If Not Sheets(1).Cells.Find(Me.TextBox1.Value) Is Nothing Then Me.Label1.Caption = "你查找值:" & Me.TextBox1.Value & "在" & Sheets(1).Cells.Find(Me.TextBox1.Value).Address & "单元格"Else Me.Label1.Caption = "未...

用excel中的vba 给网页的文本框输入文字
.Document.All("Title").Value = "中国人民我爱你" 'Document.All("元素名称或ID") 可以引用某个元素,需要在网页源代码中查找。 End With Set ie = NothingEnd Sub将以上代码复制到excel模块里,即为宏,运行此宏。因没找到你所说的培训内容,就以标题为例了。

相似回答