Ошибка VBA Runtime 1004 в Range.Clear

Об этой ошибке много сообщений, но я не могу заставить это работать независимо от того, что я пытаюсь. Большинство людей говорят, что это происходит, когда вы пытаетесь вызвать метод на неактивном листе, но вам не нужно это делать. Ошибка в строке 28. Спасибо.

Private Sub CommandButton1_Click() Dim x As Integer Dim boisePaste As Integer Dim jrgPaste As Integer Dim master As Integer Dim lastRow As Integer Dim bookCount As Integer bookCount = Application.Workbooks.Count For x = 1 To bookCount If Left(Application.Workbooks(x).Name, 14) = "ITEM_INVENTORY" Then boisePaste = x ElseIf Left(Application.Workbooks(x).Name, 6) = "report" Then jrgPaste = x ElseIf Left(Application.Workbooks(x).Name, 8) = "Portland" Then master = x End If next x 'Unhide sheets and delete Boise range' Application.ActiveWorkbook.Sheets("BoisePaste").Visible = True Sheets("JRGpaste").Visible = True lastRow = Sheets("BoisePaste").Cells(Rows.Count, "B").End(xlUp).Row Sheets("BoisePaste").Range(Cells(1,2), Cells(lastRow, 23)).Clear 'Open Boise file and copy range, paste in master' Application.Workbooks(boisePaste).Activate With ActiveSheet .Range(.Cells(1,1), .Cells((.Cells(Rows.Count, "A").End(xlUp).Row),22)).Copy End With Application.Workbooks(master).Sheets("BoisePaste").Range(B1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False 'Open JRG report and copy range, paste in master' Application.Workbooks(jrgPaste).Activate ActiveSheet.Cells.Copy Application.Workbooks(master).Sheets("JRGpaste").Range(A1).Paste Application.CutCopyMode = False 'Refresh pivot tables; hide sheets' Application.Workbooks(master).Activate With ActiveWorkbook .RefreshAll .RefreshAll .Sheets("BoisePaste").Visible = False .Sheets("BoisePaste").Visible = False End With End Sub 

Вам нужно явно указать, на каком листе вы хотите, чтобы Rows.Count и другие такие виды использования Range ( Columns , Rows , Cells и т. Д.) Rows.Count включены.

Попробуй это:

 Sheets("BoisePaste").Range(Sheets("BoisePaste").Cells(1,2), Sheets("BoisePaste").Cells(lastRow, 23)).Clear 

Итак, пройдите свой код и убедитесь, что вы это делаете везде … то есть в .Range(.Cells(1,1), .Cells((.Cells(Rows.Count, "A").End(xlUp).Row),22)).Copy , вы не сделали это для Rows.Count , поэтому добавьте там лист, чтобы предотвратить любые неожиданные действия.

Подумайте об этом, возможно, с линией
myVariable = Sheets("mySheet").Range(Cells(1,1),Cells(1,2)).Value

VBA читает это как

В mySheet найдите диапазон. Какой диапазон? Hm, пользователь говорит Cells(1,1) и Cells(1,2) , но какой лист он хочет? Текущая действующая таблица называется yourSheet … Он указал, где должен быть Range (лист называется mySheet ), но он не на Cells() , поэтому я не знаю, чего он хочет! mySheet cells(1,1) или yourSheet cells(1,1) ?

(и да, именно так думает компьютер: P)

Изменить: я прошел и попытался подтянуть ваш код. Но, как вы можете видеть, возможно, я не совсем уверен в том, что вы хотите сделать, но это должно дать вам некоторую помощь / понимание:

 Private Sub CommandButton1_Click() Dim x As Integer Dim boisePaste As Integer Dim jrgPaste As Integer Dim master As Integer Dim lastRow As Integer Dim bookCount As Integer bookCount = Application.Workbooks.Count ' Create variables to hold the workbook and sheet names. Dim jrgWS As Worksheet, boiseWS As Worksheet Dim masterWB As Workbook Set masterWB = Workbooks(master) Set jrgWS = Sheets("JRGPaste") Set boiseWS = Sheets("BoisePaste") For x = 1 To bookCount If Left(Application.Workbooks(x).Name, 14) = "ITEM_INVENTORY" Then boisePaste = x ElseIf Left(Application.Workbooks(x).Name, 6) = "report" Then jrgPaste = x ElseIf Left(Application.Workbooks(x).Name, 8) = "Portland" Then master = x End If Next x 'Unhide sheets and delete Boise range' Application.ActiveWorkbook.Sheets("BoisePaste").Visible = True jrgWS.Visible = True With boiseWS lastRow = .Cells(.Rows.Count, "B").End(xlUp).Row .Range(.Cells(1, 2), .Cells(lastRow, 23)).Clear End With 'Open Boise file and copy range, paste in master' '' DONT USE ACTIVE SHEET! Use your variables instead 'Application.Workbooks(boisePaste).Activate With boiseWS 'Since you want values (xlPasteValues), just set the two ranges equal instead of copy/paste .Range("B1").Value = .Range(.Cells(1, 1), .Cells((.Cells(.Rows.Count, "A").End(xlUp).Row), 22)).Value End With 'Open JRG report and copy range, paste in master' ' The below just pastes into the same sheet, no?? jrgWS.Cells.Copy jrgWS.Range("A1").Paste Application.CutCopyMode = False 'Refresh pivot tables; hide sheets' Application.Workbooks(master).Activate With ActiveWorkbook .RefreshAll .RefreshAll .Sheets("BoisePaste").Visible = False End With End Sub 
  • Excel / VBA - ошибка времени выполнения 91 возникает только после ввода и выхода из режима разработки
  • Excel VBA - Ошибка выполнения «1004»
  • Ошибка VBA Runtime Error 91 Переменная объекта не задана - что я делаю неправильно?
  • Как узнать тип данных ячейки
  • Ошибка времени выполнения 1004 'Метод копирования класса Range Failed'
  • VBA - выбор метода не выполнен
  • Ошибка Runtime Ошибка 13 типа Excel
  • Массивная версия генератора частичной перестановки в VBA Excel
  • VBA error 1004 выберите метод поля класса рабочего листа
  • Excel 2013 VBA Ошибка выполнения 13 Тип Несоответствие
  • Ошибка выполнения 1004 при запуске кода на листе, создаваемом динамически
  • Interesting Posts

    Функция VBA Weeknum возвращает неверный номер недели?

    Как скопировать все поданные строки из одной таблицы в другую

    Мне нужен этот код для копирования строк на основе критериев от Col «A» и Col «J». Это код, который я скопировал с другого рабочего листа. благодаря

    Excel VBA для получения списка файлов несколькими расширениями файлов и последней измененной датой

    Вложенные действия Хотя внутренний цикл работает только при первой итерации внешнего цикла

    Избегайте «Ошибка 1004: никакие ячейки не были найдены» при подсчете пустой колонки

    Excel: как подсчитать количество раз, когда диапазон данных содержит два значения в одной строке

    Скопировать форматированные данные с одного листа на другой

    Сценарий Python с xlwings не вычисляет формулы массива при копировании и вставке из одной книги в другую

    Импорт из файла txt в книгу Excel

    проверьте, имеют ли определенные ячейки в Excel данные или нет C #

    Элементы Excel Count

    Цикл «If Then» с копией и вставкой

    Добавление строк в excel xlswriter

    Excel, как я могу проверить ячейку в excel, если она пуста, а затем переместить содержимое предыдущей ячейки в текущую ячейку

    Давайте будем гением компьютера.