Excel VBA, получая диапазон от неактивного листа

Этот скрипт отлично работает, когда я просматриваю лист «Temp». Но когда я нахожусь на другом листе, команда копирования не работает. Она дает «Определенную приложением или объектную ошибку»,

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

Я могу использовать этот скрипт вместо этого, но потом у меня проблемы с вставкой его

 Sheets("Temp").Columns(1).Copy Sheets("Overview").Range("C40").PasteSpecial 
  • Я не хочу активировать лист «Temp», чтобы получить это

Что еще я могу сделать

Ваша проблема заключается в том, что поскольку ссылки 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 

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

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

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

Это будет сделано, я не люблю использовать (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") 
  • В Excel VBA для Windows, для разобранных JSON-переменных, что это такое JScriptTypeInfo?
  • Уникальные случайные числа с использованием VBA
  • Вставка онлайн-изображения в Excel с помощью VBA
  • Количество строк по отфильтрованным данным
  • Преобразование даты Excel из yyyymmdd в mm / dd / yyyy
  • Запуск макроса Excel из внешнего Excel с помощью VBScript из командной строки
  • Экспортируйте каждый лист в отдельный файл csv
  • Добавление опции вложения для запланированного сценария электронной почты vba
  • Добавить пробел после n-й запятой в Excel, Notepad ++ или emEditor?
  • Условное форматирование с использованием кода Excel VBA
  • Повторение случайных величин в VBA
  • Давайте будем гением компьютера.