在特定列Excel VBA中匹配函数

在特定列Excel VBA中匹配函数,vba,excel,match,worksheet-function,Vba,Excel,Match,Worksheet Function,我正试图在VBA for Excel 2011中编写一个程序,该程序可以在一列(由另一个变量确定的列)中搜索数字1,以便它知道从何处开始迭代 假设列的编号由colnumvar给出。我能想到的唯一方法是Match函数,这让我写了以下内容: Dim rowvar As Integer rowvar = WorksheetFunction.Match(1,Range(Cells(1,colnumvar),Cells(1000,colnumvar)),0) 然而,这给了我一个错误。在对它进行了更多的

我正试图在VBA for Excel 2011中编写一个程序,该程序可以在一列(由另一个变量确定的列)中搜索数字1,以便它知道从何处开始迭代

假设列的编号由
colnumvar
给出。我能想到的唯一方法是Match函数,这让我写了以下内容:

Dim rowvar As Integer
rowvar = WorksheetFunction.Match(1,Range(Cells(1,colnumvar),Cells(1000,colnumvar)),0) 

然而,这给了我一个错误。在对它进行了更多的研究之后,我意识到它不能接受
单元格([row],[col])
的操作方式,而是想要
范围(“A1:A100”)
。不幸的是,我不能这样做,因为程序正在确定要查看哪一列。如果您能帮助我们解决这个问题,我们将不胜感激

你想做的是更好地提供服务


这个简单的函数返回了您找到的位置


Function rowvar(ByRef c As Integer) As Integer
    Dim keySrc As Integer
    keySrc = 22 'wath you want to find
    rowvar = WorksheetFunction.Match(keySrc, Range(Cells(1, c), Cells(1000, c)), 0)
End Function

与rowvar(x)

一起使用运行代码时,
colnumvar
的值是多少?它是一个值变化的整数。。。它总是1、3、5、7、9、11、13或15。关键是代码应该是健壮的,所以我不能告诉它该做什么,如果这有意义的话哈哈:请尝试将.address放在你的区域和单元格之后,这样你就可以确定你给出的是匹配函数的地址而不是值。我刚刚试过,它告诉我下面有语法错误:
BorradorVar=WorksheetFunction.match(1,Sheets(“usarios”).range(cells(1,ColumnaNumVar,cells(1000,Columnumvar)).Address,0)
Columnumvar是我在上面写的
Columnumvar
。您不认为找不到1,所以会出现错误吗?
范围(单元格(),单元格())
是正确的语法。谢谢:D这很好,但我不得不将
Dim ws as Sheet
更改为
Dim ws as Sheet
,并且我去掉了第5行中的
。但是除了那些琐碎的修饰,这段代码非常棒,再次感谢!@mataxu-我编写代码时没有Excel进行测试。修复了
Sheet
->
工作表
.Argument
..
不是要一字不差地复制,而是要被任何适合你的东西所取代,最终什么都没有(参见链接文档)。哦,这很有道理!再次感谢:D它正是我想要的

Function rowvar(ByRef c As Integer) As Integer
    Dim keySrc As Integer
    keySrc = 22 'wath you want to find
    rowvar = WorksheetFunction.Match(keySrc, Range(Cells(1, c), Cells(1000, c)), 0)
End Function