对行进行计数直到find特定的string

我想使用Excel VBA来计算行数,直到我打一个特定的string,并设置一个variables等于它。

就像是:

Dim i as Integer i = Worksheets("Scope Phase Document").Range("A1", Range("A1").End(xlDown)).Find("FACTS - What are we measuring?").Count 

我知道这不是正确的语法,我可能错过了其他的东西,但只是使用我现在知道的不同的function,这是我希望会做的伎俩。 我明白了

运行时错误“91”说“对象variables或块variables未设置

我已经尝试了几种不同的方式来做这件事,但是却找不到一个不会导致错误的方法。

所以我想从A1开始计算所有的行,直到我到达特定的string“事实 – 我们在测量什么?”。

任何帮助将不胜感激!

我比较喜欢MATCH,但是如果没有find匹配,就会抛出一个错误。 所以我们需要testing一下:

 Dim i As Long i = 0 On Error Resume Next i = Application.WorksheetFunction.Match("FACTS - What are we measuring?", ActiveSheet.Range("A:A"), 0) On Error GoTo 0 If i > 0 Then ' do you stuff with i End If 

所以你基本上想要MATCH()

 =MATCH("FACTS - What are we measuring?",A:A,0) 

它返回匹配的string的行号。

你的代码很好,除了你应该使用Row属性。 您已经使用它的Count属性将返回1,因为Find方法返回一个单元格(find匹配的第一个单元格)。

 Dim i as Integer i = Worksheets("Scope Phase Document").Range("A1", Range("A1").End(xlDown)).Find("FACTS - What are we measuring?").Row 

像Scott提到的,如果你的文本没有find,Excel会抛出一个错误。

我会这样做:

 Sub rowcounter() Dim i As Integer Range("A1").Select i = 0 Do Selection.Offset(1, 0).Select i = i + 1 Loop Until Selection.Value = "FACTS - What are we measuring?" MsgBox "rows count is " & i End Sub