第一次发布。我不是行业程序员,这只是为了工作中的个人使用,以使我的工作更高效,更轻松,因此对可能是一个基本问题的问题表示歉意。
我已经搜索了一些示例来回答我的问题,但是似乎找不到适合我正在做的事情的答案。
我希望代码在电子表格的第1行中显示。如果找到带有文本“ WarrantyCode”的单元格,则选择该单元格。否则,在第1行中找到第一个空单元格,并将其设置为“ WarrantyCode”
这是我的代码。
Sub WCFInd()
If IsError(ActiveWorkbook.Worksheets("Sku").Rows(1).Find("WarrantyCode").Select) Then
Range("A1").End(xlToRight).Offset(0, 1).Select
Selection.Value = "WarrantyCode"
Else
ActiveWorkbook.Worksheets("Sku").Rows(1).Find("WarrantyCode").Select
End If
End Sub
当Row1确实具有带有“ WarrantyCode”的单元格时,它将正确选择该单元格。但是,如果没有,我得到运行时错误“ 91”:对象变量或With块变量未设置。
任何帮助将不胜感激。
最佳答案
您的密码
ActiveWorkbook.Worksheets("Sku").Rows(1).Find("WarrantyCode").Select
正在选择一个单元格,但未提供对该单元格的引用。
IsError
函数的语法为IsError( expression )
,这意味着必须将某些内容作为参数传递,并且实际上您根本不会传递任何参数。因此,删除
.Select
并仅使用以下行:If IsError(ActiveWorkbook.Worksheets("Sku").Rows(1).Find("WarrantyCode")) Then
而且您的代码不会崩溃。
但是,您可能想做的是:
Sub WCFInd()
If ActiveWorkbook.Worksheets("Sku").Rows(1).Find("WarrantyCode") Is Nothing Then
Range("A1").End(xlToRight).Offset(0, 1).Select
Selection.Value = "WarrantyCode"
Else
ActiveWorkbook.Worksheets("Sku").Rows(1).Find("WarrantyCode").Select
End If
End Sub
并且该代码最好写成(无论如何,我认为)为
Sub WCFInd()
With ActiveWorkbook.Worksheets("Sku").Rows(1)
If .Find("WarrantyCode") Is Nothing Then
.Cells(1, .Columns.Count).End(xlToLeft).Offset(0, 1).Value = "WarrantyCode"
End If
.Find("WarrantyCode").Select
End With
End Sub