Новичок: ошибка при установке объекта диапазона на листе

Я очень новичок в пространстве VBA, и мне интересно, почему эта следующая строка кода не работает?

Я получаю сообщение об ошибке 1004: не удалось выполнить диапазон рабочего листа объекта.

Sub MMMatch()
Dim oCell as Range
Dim r_out as Range
Dim r_in as Range
Dim ws1 as worksheet
Dim ws2 as worksheet

Set ws1 = Worksheets("MM Limits")
Set ws2= Worksheets("PivotTable")

Set r_out= ws1.range(Range("A2"),Range("A2").endxldown)
Set r_in=ws2.range(range("D2"),range("D2").endxldown)

end sub

Я получаю сообщение об ошибке во второй последней строке. Хотя я мог бы добавить строки кода, чтобы сначала выбрать рабочий лист, прежде чем устанавливать объект диапазона, мне интересно, почему эта строка кода не работает?

Неквалифицированные вызовы Range неявно относятся к ActiveSheet. Оцените их с помощью листа, с которым вы собираетесь работать (ws1, ws2)

Mathieu Guindon 01.05.2018 16:50
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
0
1
22
1

Ответы 1

Вы должны квалифицировать все объекты Range на их родительские листы, и Endxldown должен быть End(xlDown).

Sub MMMatch()
Dim oCell As Range
Dim r_out As Range
Dim r_in As Range
Dim ws1 As Worksheet
Dim ws2 As Worksheet

Set ws1 = Worksheets("MM Limits")
Set ws2 = Worksheets("PivotTable")
'the Ranges inside the outer range must match the parent sheet
Set r_out = ws1.Range(ws1.Range("A2"), ws1.Range("A2").End(xlDown))
Set r_in = ws2.Range(ws2.Range("D2"), ws2.Range("D2").End(xlDown))

End Sub

Другие вопросы по теме