VBA实现Excel文本框模糊查询并复制结果
VBA实现Excel文本框模糊查询并复制结果
本文提供VBA代码示例,讲解如何利用Excel文本框实现对'销售明细表'的模糊查询,并将匹配结果复制到'销售记录管理'工作表。
功能:
- 清空'销售记录管理'工作表中第10行及以下的内容。2. 读取文本框'TextBox10'的值作为查询关键字。3. 在'销售明细表'的'E'列中进行模糊查询,查找包含关键字的行。4. 将匹配到的整行数据复制到'销售记录管理'工作表,从第10行开始粘贴。
**代码:**vbaPrivate Sub CommandButton2_Click()
'删除第10行及以下所有行 If Not IsEmpty(Sheets('销售记录管理').Range('A10')) Then Sheets('销售记录管理').Rows('10:1048576').Delete Shift:=xlUp Else Sheets('销售记录管理').Rows('11:1048576').Delete Shift:=xlUp End If
'获取模糊匹配的值 Dim searchValue As String searchValue = Me.TextBox10.Value
'查找匹配的行数 Dim lastRow As Long lastRow = Sheets('销售明细表').Cells(Sheets('销售明细表').Rows.Count, 'E').End(xlUp).Row Dim matchRows As Collection Set matchRows = New Collection Dim i As Long For i = 2 To lastRow '从第2行开始,跳过表头 If InStr(1, Sheets('销售明细表').Cells(i, 'E').Value, searchValue, vbTextCompare) > 0 Then matchRows.Add i End If Next i '将匹配的行复制到批次号汇总查询 Dim j As Long For j = 1 To matchRows.Count Dim matchRow As Long matchRow = matchRows(j) Sheets('销售明细表').Range('B' & matchRow & ':U' & matchRow).Copy Destination:=Sheets('销售记录管理').Range('B' & (j + 9)) Next j
End Sub
'清空所有文本框Private Sub CommandButton1_Click() With Me TextBox7.Value = '' TextBox8.Value = '' TextBox9.Value = '' TextBox10.Value = '' TextBox11.Value = '' TextBox12.Value = '' TextBox13.Value = '' TextBox14.Value = '' TextBox15.Value = '' TextBox16.Value = '' End WithEnd Sub
'关闭窗体Private Sub CommandButton3_Click() Unload MeEnd Sub
代码说明:
- 使用
InStr函数进行模糊匹配,该函数返回搜索值在目标字符串中的位置,若大于0则匹配成功。2.vbTextCompare参数确保不区分大小写进行匹配。3. 使用Collection对象存储匹配的行号,方便后续复制操作。
通过以上代码,即可实现基于文本框输入的模糊查询功能,并将结果复制到指定工作表。
原文地址: https://www.cveoy.top/t/topic/bXPF 著作权归作者所有。请勿转载和采集!