findRange 和 addRange 的区别

本文介绍了在查询构造器中使用findRange和addRange方法来修改查询条件的具体用法。findRange用于替换原有的查询条件,而addRange则是在原有基础上增加新的查询条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

findRange:

        qbr = qbs.findRange(fieldnum(InventTable , ItemId));
        qbr.value("B-pack2");

        替换之前的查询条件.

addRange:

        qbr = qbs.addRange(fieldnum(InventTable , ItemId));
        qbr.value("B-pack2");

        如果之前ItemId有查询条件则再增加一个Or Itemid == B-pack2.

    

修改以下代码,当TextBox1 输入搜索内容时,不要跳转到单元格,直接跳转到单元格所在行,并选中该行,且不要改变当前页面水平的滚动位置,并显示全部的代码Private Sub TextBox2_Change() End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Me.Columns(“Y”)) Is Nothing Then Application.EnableEvents = False ProcessRowsAndRunMacros Application.EnableEvents = True End If End Sub '--------search Private Sub TextBox1_Change() Dim searchVal As String searchVal = Me.TextBox1.Text If searchVal = "" Then Exit Sub Dim arrColumns As Variant arrColumns = Array("A") Dim found As Boolean found = False For Each col In arrColumns Dim lastRow As Long lastRow = Cells(Rows.Count, col).End(xlUp).Row If lastRow < 3 Then lastRow = 3 Dim findRange As Range Set findRange = Range(col & "3:" & col & lastRow) Dim resultCell As Range Set resultCell = findRange.Find( _ What:=searchVal, _ LookIn:=xlValues, _ LookAt:=xlPart) If Not resultCell Is Nothing Then Application.GoTo resultCell, Scroll:=True found = True Exit For End If Next col End Sub Private Sub TextBox1_LostFocus() Me.TextBox1.Text = “” End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) On Error GoTo CleanExit ' 删除所有已存在的文本框(无论是否选择C列) DeleteTextBox "InfoTextBox" ' 检查是否选择了C5及以下的C列单元格 If Target.CountLarge > 1 Then Exit Sub If Target.Column <> 3 Or Target.Row < 5 Then Exit Sub ' 获取搜索值 Dim searchValue As String searchValue = CStr(Target.Value) If searchValue = "" Then Exit Sub ' 在"CRC"工作表中查找 Dim crcSheet As Worksheet Set crcSheet = ThisWorkbook.Sheets("CRC") ' 使用VLookup提高效率 Dim resultValue As Variant resultValue = Application.VLookup(searchValue, crcSheet.Range("B:C"), 2, False) ' 处理未找到的情况 If IsError(resultValue) Then MsgBox "未找到匹配项:" & searchValue Exit Sub End If ' 创建文本框 Dim textBox As Shape Dim destCell As Range Set destCell = Me.Cells(Target.Row, "D") ' 创建文本框并设置位置 Set textBox = Me.Shapes.AddTextbox( _ msoTextOrientationHorizontal, _ destCell.Left, _ destCell.Top, _ destCell.Width * 1.5, _ destCell.Height) ' 设置文本框属性 With textBox .name = "InfoTextBox" .TextFrame.Characters.Text = CStr(resultValue) .Fill.ForeColor.RGB = RGB(255, 255, 230) ' 浅黄色背景 .Line.ForeColor.RGB = RGB(100, 100, 100) ' 灰色边框 .TextFrame.HorizontalAlignment = xlHAlignCenter .TextFrame.VerticalAlignment = xlVAlignCenter .TextFrame.Characters.Font.Size = 9 .TextFrame2.AutoSize = msoAutoSizeTextToFitShape ' 自动调整文本大小 End With CleanExit: ’ 添加错误处理逻辑(可选) If Err.Number <> 0 Then Debug.Print "错误 " & Err.Number & ": " & Err.Description End If End Sub ’ 专门的文本框删除过程 Private Sub DeleteTextBox(name As String) On Error Resume Next Me.Shapes(name).Delete On Error GoTo 0 End Sub
最新发布
08-07
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值