Как получить fby строк и столбцов с помощью Cells.Find

#excel #row #cells #vba

#excel #строка #ячейки #vba

Вопрос:

я использую этот код, пытаясь получить строку и столбец, в которых есть ячейка, которую я ищу, но она ничего не возвращает. Кто-нибудь может мне помочь с этим.

 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
  

Ответ №1:

Вам не нужно использовать массив строк — это просто усложняет его.

cell Переменная представляет собой объект диапазона, который имеет .Row .Column свойства и . Вы можете использовать их вместо a(1) и a(2) , т.е. Sheets("COMPSTK").Cells(cell.Row, cell.Column).Value

В качестве альтернативы вы можете использовать .Address свойство cell , т. Е. Sheets("COMPSTK").Range(cell.Address).Value . Я не проверял, работает это или нет, но стоит попробовать.

Ответ №2:

Я нашел это, я просто использовал 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