Ссылка на диапазон на другом листе в коде vba для копирования формулы в последнюю строку данных - PullRequest
0 голосов
/ 30 марта 2020

У меня есть рабочая тетрадь с двумя листами. На листе 1 у меня есть столбец (A), для которого мне нужно скопировать формулу в A2 на столько строк, сколько есть в столбце sheet2 (B). В настоящее время я использую следующий код

Range("B3:B" & Cells(Rows.Count,"C").End(xlUp).Row).Formula = Range ("B2")

для сделать что-то подобное, но где указанный диапазон находится на том же листе. Что мне нужно знать, так это как адаптировать этот код для замены вышеуказанного «C» диапазоном на листе 2. Кто-нибудь может помочь?

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Вы можете использовать:

With Sheet1 ' reference Sheet1 worksheet
    .Range("B3:B" & Sheet2.Cells(Rows.Count, "B").End(xlUp).Row).Formula = .Range("B2").Formula
End With

, чтобы скопировать формулу B2 ячейки листа1 на столько строк, сколько столбца B Листа2 индекс последней не пустой строки ячейки

0 голосов
/ 30 марта 2020

Для каждого Range(), Cells(), Rows() и Columns() объекта укажите, на каком листе они находятся. Не пропустите ни одного из них, иначе ваш код может случайно произойти.

Пример

Worksheets("Sheet1").Range("A1")  'addresses cell A1 in Sheet1

Вы можете использовать переменные в качестве ссылок:

Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")

ws.Range("A1") 'now also addresses cell A1 in Sheet1

, а

Range("A1") 

будет обращаться к листу, который имеет фокус (находится сверху), пока выполняется код. Не надейтесь на это, потому что это может легко измениться одним щелчком мыши пользователя. Поэтому всегда указывайте, какой лист вы имеете в виду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...