我在宏的开头有以下定义
'Define This Workbook
Dim wbk As Workbook
Set wbk = ThisWorkbook
'Define Main Sheet
Dim wks As Worksheet
Set wks = Sheet2
我不明白为什么以下代码行不起作用。我收到错误消息"对象不支持此属性或方法"。
lastRow = wbk.wks.Range("B:B").Find("Timmar", [B1], , , xlByRows, xlPrevious).row
所以我必须编写以下代码行。他们工作:
wbk.Activate
wks.Activate
lastRow = Range("B:B").Find("Timmar", [B1], , , xlByRows, xlPrevious).row
你明白为什么我的原始方法不起作用吗?
答案 0 :(得分:3)
正如我在上面的评论中所提到的,改变
wbk.wks.Range("B:B")
到
wks.Range("B:B")
wbk
是Workbook
对象,它确实不支持名为wks
的属性。检查here。
如果您要指定wks
属于wbk
,请使用以下内容:
Set wks = wbk.Worksheets("Sheet2")
此外,如果范围wks.Range("B:B")
不包含Timmer
值的单元格,那么您会收到运行时错误,因为您正试图获取.Row
属性 unfound 单元格(当.Find
的结果为Nothing
时)。改为使用这个:
Dim rng As Range
Dim lastRow As Long
Set rng = wks.Range("B:B").Find("Timmar", wks.[B1], , , xlByRows, xlPrevious)
If Not rng Is Nothing Then
lastRow = rng.Row
Else
lastRow = 1 ' change to suit
End If