我想在整个使用过的细胞中找到“示例”这个词。但代码给了我运行时错误1004“应用程序定义或对象定义的错误”。我知道行Range(Cells(1, 1), Cells(lastrow, lastcolumn))
有问题
它可能是什么?
提前致谢。 这是代码:
Dim lastrow as Long
Dim lastcolumn as Long
Dim sclnr as Range
dim aws as WorkSheet
Set aws = Thisworkbook.Sheets("Sheet1")
'Using UsedRange
lastrow = aws.UsedRange.Rows(aws.UsedRange.Rows.Count).Row
lastcolumn = aws.UsedRange.Columns(aws.UsedRange.Columns.Count).Column
'UsedRange works fine no problem with finding last row and column
Set sclnr = aws.Range(Cells(1, 1), Cells(lastrow, lastcolumn)).Find("Example")
'the word Example exits in one of the cells
答案 0 :(得分:3)
试试这个。如果在运行宏时aws不是活动工作表,则需要限定所有范围/单元格引用。
Dim lastrow as Long
Dim lastcolumn as Long
Dim sclnr as Range
dim aws as WorkSheet
Set aws = Thisworkbook.Sheets("Sheet1")
'Using UsedRange
lastrow = aws.UsedRange.Rows(aws.UsedRange.Rows.Count).Row
lastcolumn = aws.UsedRange.Columns(aws.UsedRange.Columns.Count).Column
'UsedRange works fine no problem with finding last row and column
Set sclnr = aws.Range(aws.Cells(1, 1), aws.Cells(lastrow, lastcolumn)).Find("Example")
答案 1 :(得分:0)
Sub test_MertTheGreat()
Dim FirstAddress As String, LookForString As String
LookForString = "Example"
Dim LastRow As Long
Dim LastColumn As Long
Dim SclnR As Range
Dim awS As Worksheet
Set awS = ThisWorkbook.Sheets("Sheet1")
'Using UsedRange
With awS.UsedRange
LastRow = .Rows(.Rows.Count).Row
LastColumn = .Columns(.Columns.Count).Column
End With 'awS.UsedRange
Set SclnR = awS.Range(Cells(1, 1), Cells(LastRow, LastColumn)).Find("Example")
'the word Example exits in one of the cells
With awS.Range(awS.Cells(1, 1), awS.Cells(LastRow, LastColumn))
.Cells(1, 1).Activate
'First, define properly the Find method
Set SclnR = .Find(What:=LookForString, _
After:=ActiveCell, _
LookIn:=xlValues, _
LookAt:=xlWhole, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, _
MatchCase:=False, _
SearchFormat:=False)
'If there is a result, keep looking with FindNext method
If Not SclnR Is Nothing Then
FirstAddress = SclnR.Address
Do
'''---+++--- Your actions here ---+++---
Set SclnR = .FindNext(SclnR)
'Look until you find again the first result
Loop While Not SclnR Is Nothing And SclnR.Address <> FirstAddress
End If
End With
End Sub