用find和lastrow创建范围

时间:2017-01-27 11:59:52

标签: vba excel-vba find range excel

这是在扼杀我。 我想找一个包含单词" alex"在第一列。 让我们称这个细胞为亚历克斯。

这个想法是: 范围(细胞 - 亚历克斯,细胞(lastrow,1))。

我知道如何到达拉斯特罗,但是细胞亚历克斯正在杀死我(我不认为excel可以看到它。它总是选择从A1到拉斯特罗的范围。)

这是一段代码:

Cells.Find(What:="alex", after:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
            xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
            , SearchFormat:=True).Select        
    Set sht = Worksheets(sheetbr)
    lastrow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
    Range(ActiveCell, Cells(lastrow, 13)).Select

3 个答案:

答案 0 :(得分:1)

如果你确定知道" Alex"在第1列中,然后使用:

With Worksheets(sheetbr)
    .Range(.Columns(1).Find(What:="alex", after:=.Cells(.Rows.Count, 1), LookIn:=xlFormulas, LookAt:=xlPart, _
                            SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True, _
                            SearchFormat:=True), _
           .Cells(.Rows.Count, "A").End(xlUp)).Select
End With

否则使用此:

Dim f As Range

With Worksheets(sheetbr)
    Set f = .Columns(1).Find(What:="alex", after:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
            xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
            , SearchFormat:=True)
    If Not f Is Nothing Then .Range(f, .Cells(.Rows.Count, "A").End(xlUp)).Select
End With

答案 1 :(得分:0)

我认为问题是LookIn:= xlFormulas。尝试更改为LookIn:= xlValues

答案 2 :(得分:0)

好吧,我已经弄明白了。 我没告诉你一切。 我通过导入另一个文档来启动我的代码。 在我编写代码时,当你提到ActiveCell时,它开始使用另一本书。 我通过将导入的电子表格中的数据复制到原始(book1)来解决它。 其余的很容易。在这里:

Set sht = ThisWorkbook.Worksheets(1)
lastrow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row 'to find the lastRow
Cells.Find(What:="GuV 7", after:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
            xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
            , SearchFormat:=True).Activate
Range(ActiveCell, Cells(lastrow, 13)).Select 'I need columns 1-13

再一次,谢谢你们。