在VBA中查找功能 - 范围限制

时间:2014-09-11 12:00:15

标签: excel excel-vba vba

下午

我有可爱的工作查找功能,但它搜索所有列。现在我尝试对范围定义进行各种更改,并对列A进行选择限制。

我遇到的问题是它忽略了任何限制并继续以自己的方式进行。代码如下,它使用两个函数,第一个是Find,第二个是Find Next。

有人可以帮我一把,并建议我如何将搜索限制在电子表格的A栏。

Private Sub Find_Click()
Worksheets("Master").Activate
Dim strFind As String
Dim FirstAddress As String
Dim rSearch As Range
Set rSearch = Range("a1", Range(A:A).End(xlUp))
Dim f      As Integer

strFind = Me.TextBox1.Value

With rSearch
    Set c = .Find(strFind, LookIn:=xlValues)
    If Not c Is Nothing Then
        updateFields anchorCell:=c
        FirstAddress = c.Address
        Do
            f = f + 1
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> FirstAddress
        If f > 1 Then
            Select Case MsgBox("There are " & f & " instances of " & strFind, vbOKCancel Or vbExclamation Or vbDefaultButton1, "Multiple entries")

                Case vbOK
                Case vbCancel

            End Select

        End If
    Else: MsgBox strFind & " not listed"
    End If
End With

由于

2 个答案:

答案 0 :(得分:2)

您设置范围的方式不正确。首先,您在A:A中缺少双引号。其次,即使您使用双引号,rSearch也始终为A1

您可以通过以下两种方式设置范围

  1. 查找最后一行,然后创建范围
  2. 代码1

    Dim lRow As Long
    
    '~~> ws is the relevant sheet
    lRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
    Set rSearch = ws.Range("A1:A" & lRow)
    
    1. 取整列
    2. 代码2

      Set rSearch = ws.Columns(1)
      

答案 1 :(得分:0)

如果您只想查看A列,请尝试将“research”范围定义为:

Range("A1").End(xlDown).Select