vba - Excel-VBA 查找函数不考虑列的第一行

标签 vba excel find

我一直在网上搜索一种简单的方法来查找某些字符串或值的行号和列号。令我惊讶的是,我还没有找到我想要的东西,所以我决定编写自己的函数。由于我是一个初学者,我遇到了一些问题。

因此,在这个示例中,我的目标是编写一个函数,我可以在任何 VBA 子程序中使用该函数来查找行号或列号。现在,我编写了以下函数来查找列:

Function Find(SearchRange As String, Word As String) As Long
Dim found As Range

Set found = ActiveSheet.Columns(SearchRange).Find(what:=Word, LookIn:=xlValues, lookat:=xlWhole)

If Not found Is Nothing Then
Find = found.Row
End If
End Function

然后我编写了以下子代码来使用该函数:

Sub FindTest()
Cells(1, 2) = Find("A", "C")
End Sub

如果我有下表(A 列):

一个
B
C
D
E

我应该得到的结果是“3”。这确实有效,我对此感到很高兴。但是,如果我在表中输入另一个“C”,例如

C
B
C
D
E

我得到的结果仍然是“3”而不是“1”。如果我将表格更改为

C
B
一个
D
E

我得到的结果是“1”。

因此,一旦我正在查找的值在我正在搜索的范围内出现多次,第一行似乎就不会被考虑。

我在网上搜索了这个问题,遗憾的是我没有找到明确的答案。然而,有些人建议从最后一个单元格开始搜索,从而使搜索从第一个单元格开始(即搜索在“通过”最后一个单元格后将直接跳转到开头)。建议的代码是添加

After:=.Cells(.Cells.Count)

进入“查找”定义,但是如果我更新为

Set found = ActiveSheet.Columns(SearchRange).Find(what:=Word, After:=.Cells(.Cells.Count), LookIn:=xlValues, lookat:=xlWhole)

我收到“编译错误:无效或不合格的引用”。

我现在这个阶段真的很绝望。有谁可以帮我解决这个问题吗?

非常感谢!

最佳答案

试试这个:

Sub findstr()
    Dim rng As Range
    Set rng = ActiveSheet.UsedRange.Find("C", , xlValues, xlWhole)
    MsgBox rng.Row          '--->this will give you row
    MsgBox rng.Column       '--->this will give you column
End Sub

编辑:在您尝试使用 After:=.Cells(.Cells.Count)Find 函数中进行了更改

Function Find(SearchRange As String, Word As String) As Long
    Dim found As Range

    With Sheets("Sheet1").Range(SearchRange & ":" & SearchRange)
        Set found = ActiveSheet.Columns(SearchRange).Find(what:=Word, After:=.Cells(.Cells.Count), LookIn:=xlValues, lookat:=xlWhole)
    End With

    If Not found Is Nothing Then
        Find = found.Row
    End If

End Function

关于vba - Excel-VBA 查找函数不考虑列的第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36790723/

相关文章:

excel - 计算列中的连续数字

Excel VBA : Setting a Workbook-level default save directory

excel - 有人使用 Redshift 获取 Excel 数据透视表吗?

c++ - 查找关于成对 vector 的条件

search - Sublime Text 'find in files' 在查找结果中给出 <binary>

javascript - Element.getElementByTag ("mytag")有时返回空

excel - 如何从海量数据中查找等于今天的日子

vba - Excel VBA简单的if not语句

vba - Excel VBA - 多个子对不同的项目做同样的事情

excel - 如何将 "plant"彭博功能 BDP 转换为单元格 VBA