метод автозаполнения класса диапазона не удался - поле назначения содержит поле источника [дубликат]

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

26
задан pnuts 30 January 2015 в 15:04
поделиться

3 ответа

Ваша проблема в том, что поскольку ссылки Cell внутри Range не соответствуют критериям, они ссылаются на значение по умолчанию ActiveSheet. Таким образом, ваш код на самом деле говорит

Sheets("Temp").Range(ActiveSheet.Cells(1), ActiveSheet.Cells(1).End(xlDown)).Copy
Sheets("Overview").Range("C40").PasteSpecial

Вот улучшенная версия

Dim sh1 As Worksheet
Dim sh2 As Worksheet

Set sh1 = ActiveWorkbook.Sheets("Temp")
Set sh2 = ActiveWorkbook.Sheets("Overview")

With sh1
    .Range(.Cells(1,1), .Cells(1,1).End(xlDown)).Copy
End With
sh2.Range("C40").PasteSpecial
32
ответ дан chris neilsen 19 August 2018 в 08:58
поделиться
  • 1
    Конечно! Ты великолепен! : D Большое спасибо. Ячейки (1), Таблицы («Temp»). Ячейки (1) .End (xlDown)). Копирование. Но ваша версия компактна и лучше сформирована, поэтому я ее поймал. :) – Aziz 8 November 2011 в 11:50

Я сам столкнулся с такой проблемой: я пытался выполнить поиск по отдельному листу, чтобы узнать, соответствует ли цвет элемента ячейке цвета ячейки в списке и возвращает строковое значение: если вы используете .Cells ( строка, столбец), вам нужно только это: Листы («имя листа»). Ячейки (строка, столбец) для ссылки на этот диапазон ячеек.

Я перебирал блок из 500 ячеек, и он работает на удивление быстро для меня.

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

3
ответ дан Anonymous 19 August 2018 в 08:58
поделиться

Это будет делать, я не люблю использовать (xlDown) в случае, если ячейка пуста.

Dim lRow As Long
lRow = Sheets("Temp").Cells(Cells.Rows.Count, "A").End(xlUp).Row

With Sheets("Temp")
     .Range("A1:A" & lRow).Copy Sheets("Overview").Range("C40")
End With

Или если вы хотите просто использовать столбцы ...

Sheets("Temp").Columns(1).SpecialCells(xlCellTypeConstants).Copy Destination:=Sheets("Overview").Range("C40")
1
ответ дан GMalc 19 August 2018 в 08:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: