#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