使用:Excel 2007中/ Win 7的定位单元格的值在Excel VBA
首先,我创建了一个子程序找到动态范围的所谓 'WIP' 工作表:以
Sub GetWIPRange()
Dim WIPrng1 As Range
Dim WIPrng2 As Range
Sheets("WIP").Activate
Set WIPrng1 = Cells.find("*", [a1], , , xlByRows, xlPrevious)
Set WIPrng2 = Cells.find("*", [a1], , , xlByColumns, xlPrevious)
If Not WIPrng1 Is Nothing Then
Set WIPrng3 = Range([a1], Cells(WIPrng1.Row, WIPrng2.Column))
Application.Goto WIPrng3
Else
MsgBox "sheet is blank", vbCritical
End If
End Sub
现在我想上面找到定义的范围内给定的合同编号:
Sub find()
Dim find As Long
find = Application.WorksheetFunction.Match("545499", Range(WIPrng3.Parent.Name & "!" & WIPrng3.Address), 0)
MsgBox "Found at row : " & find
End Sub
但我从上面的代码得到的错误是:
运行时错误“91”: 对象变量未设置块变量。
- 我该如何解决这个问题,以便它返回我正在寻找的值的行号?
- 是否有一种更有效的方式来使用VBA查找单元格值?例如,如果我有很多工作表,并且我想搜索所有工作表并返回值的特定行号和工作表位置。
非常感谢!
我在模块的声明部分定义WIPrng3一些很好的分析。它不应该持续下去吗?条件语句运行GetWIPRange子例程,但现在我得到了一个不同的错误:运行时错误1004无法获取WorksheetFunction类的Match属性。 – AME
它会一直存在,直到您编辑代码,然后您的所有持久变量都会被重置。我想如果你一个接一个地运行它,它就会起作用。我在文中提出了一些可能的错误,所以检查一下。 –
色谱柱(“I:I”)。选择 选择。找到(What:= x(0),After:= ActiveCell,LookIn:= xlValues,LookAt:= xlPart,SearchOrder:= xlByColumns,SearchDirection:= xlNext,MatchCase:= False,SearchFormat:= False)。激活BKRow = ActiveCell.Row – AME