2015-12-06 8 views
1

Привет Я полностью готов к новому VBA. Я пытался создать кнопку, которая может автоматически копировать данные из столбцов A-E на sheet1 («Обзор») в Sheet2 («Пример»).Excel VBA-- Ошибка '424' Требуемый объект номер

Ниже приведен код, который я скопировал из учебного видео, но в итоге появляется сообщение об ошибке 424 - Object Required.

И проблема, кажется, это с lastrow: lastrow = Sheetoverview.Cells (Rows.Count, 1) .END (xlUp) .Row

Может кто-нибудь, пожалуйста, помогите мне с этой проблемой? Спасибо!

Sub copyconlumns() 

Dim lastrow As Long, erow As Long 

lastrow = Sheetoverview.Cells(Rows.Count, 1).End(xlUp).Row 
For i = 2 To lastrow 
Sheetoverview.Cells(i, 1).copy 
erow = sheetexample.Cells(Tows.Count, 1).End(xlUp).Offset(1, 0).Row 

Sheetoverview.Paste Destination = Worksheets("Sheetexample").Cells(erow, 1) 

Sheetoverview.Cells(i, 2).copy 
Sheetoverview.Paste Destination = Worksheets("Sheetexample").Cells(erow, 2) 

Sheetoverview.Cells(i, 3).copy 
Sheetoverview.Paste Destination = Worksheets("Sheetexample").Cells(erow, 3) 

Sheetoverview.Cells(i, 4).copy 
Sheetoverview.Paste Destination = Worksheets("Sheetexample").Cells(erow, 4) 

Sheetoverview.Cells(i, 5).copy 
Sheetoverview.Paste Destination = Worksheets("Sheetexample").Cells(erow, 5) 

Next i 

Application.CutCopyMode = False 
sheetexample.Columns.AutoFit 
Range("A1").Select 

End Sub 

ответ

0

Оператор точек в VBA обращается к объекту или методу объекта. Таким образом - когда вы получаете ошибку object required в

lastrow = Sheetoverview.Cells(Rows.Count, 1).End(xlUp).Row 

есть проблема с тем, что идет перед точкой. В этом случае это почти наверняка Sheetoverview. Если это не глобальная переменная, которой было присвоено значение вне sub (что было бы проблематичным дизайном), это необъявленная переменная, которая никогда не была установлена ​​равной листу. Ваш код с большей вероятностью будет работать, если вы замените Sheetoverview на Sheets("Overview") и sheetexample на Sheets("Example").

Трудно переоценить важность размещения линии Option Explicit в верхней части каждого модуля в VBA. Это заставляет вас объявлять свои переменные и позволяет компилятору поймать множество ошибок, подобных тому, который у вас есть. Можно настроить ваш редактор VBA для автоматической вставки этой строки во все новые модули (Tools/Options/Require Variable Declatation).

+0

Спасибо, Джон! Это действительно помогло. Один из моих коллег также исправил другие проблемы с этим кодом. Sheetoverview.Paste Направление = Рабочие ("Sheetexample") Клетка (erow, 1) Это должно быть изменено следующие:. листов ("Обзор") Паста Назначение:. = (Листы "пример") Клетка. (erow, 1) – Nikki

Смежные вопросы