Я очень новичок в пространстве 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 на их родительские листы, и 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
Неквалифицированные вызовы
Range
неявно относятся кActiveSheet
. Оцените их с помощью листа, с которым вы собираетесь работать (ws1
,ws2
)