如何使用Cells.Find获取行和列

时间:2014-06-24 08:02:06

标签: excel-vba row cells vba excel

我正在使用此代码尝试获取行和列,其中有我正在查找的单元格,但它不返回任何内容。任何人都可以帮助我。

i = 1

    Do While Workbooks("Lisses.xls").Sheets("Components").Cells(i, 2).Value <> ""
        Set cell = Cells.Find(What:=Workbooks("Lisses.xls").Sheets("Components").Cells(i, 2).Value)
        Dim a() As String
        a = Split(cell.Address, "$")

        Workbooks("macro_example.xlsx").Sheets("Feuil1").Cells(i, 7).Value = Workbooks("COMPSTK.xls").Sheets("COMPSTK").Cells(a(1), a(2)).Value
        i = i + 1                                                'Passe à la ligne suivante
    Loop

2 个答案:

答案 0 :(得分:0)

您不需要使用字符串数组 - 这只会使其过于复杂。

cell变量是一个Range对象,具有.Row.Column属性。您可以使用这些而不是a(1)a(2),即Sheets("COMPSTK").Cells(cell.Row, cell.Column).Value

或者,您可以使用.Address的{​​{1}}属性,即cell。我还没有检查过这是否有效,但值得尝试。

答案 1 :(得分:0)

我找到了, 我刚刚使用ActiveCell来选择我正在寻找的单元格

Do While Workbooks("Lisses.xls").Sheets("Components").Cells(i, 2).Value <> ""
        Set o = Cells.Find(What:=Workbooks("Lisses.xls").Sheets("Components").Cells(i, 2).Value)
        If Not o Is Nothing Then
        o.Activate
        Workbooks("Lisses.xls").Sheets("Components").Cells(i, 2).Value = Workbooks("COMPSTK.xls").Sheets("COMPSTK").Cells(ActiveCell.Row, 7).Value
        End If

        i = i + 1                                                'Passe à la ligne suivante
    Loop