2014-11-26 16 views
2

Я столкнулся со следующей проблемой: У меня есть два кода, один из которых основан на листе, а второй - на основе модуля. В модуле я определение диапазона, как это:Разница между кодом запуска и модулем

Dim see As worksheet 
Set see = sheets("Sheet2") 
Dim rega As range 
Dim gh As Long 
gh = ThisWorkbook.Worksheets(1).Cells(1, 1) 
Set rega = see.Range(Cells(3, gh + 2), Cells(39, gh + 2)) 

Теперь проблема, когда я запускаю код из модуля при помощи F5 он прекрасно работает, однако, если я называю это из CommandButton написано в листе (Назовите это не работает, и, кажется, что проблема с диапазоном. Любые идеи, что я не хватает?

Благодаря

+0

Обычно он не должен давать какие-либо ошибки. можете ли вы показать, какой код вы написали в командной строке? –

+0

он не дает ошибку, он просто не определяет диапазон, поэтому диапазон «ничего» –

+0

не связан с тем, что написано в командной строке, это длинный код, который делает много разных вещей. –

ответ

0

Неквалифицированные объектов диапазон, вероятно, воспитывающие ошибка 1004?

Set rega = see.Range(Cells(3, gh + 2), Cells(39, gh + 2)) 

Помните, что метод Cells, если он не квалифицирован родителем Worksheet, всегда будет неявно ссылаться на ActiveSheet.

Try:

With see 
    Set rega = .Range(.Cells(3, gh + 2).Address, .Cells(39, gh + 2).Address) 
End With 
+0

Спасибо Дэвиду, это помогает решить проблему. ты был прав. однако проблема решена только после того, как я изменил Set see = sheets («Sheet2») для Set see = Thisworkbook.sheets («Sheet2»). С уважением –

+1

Если код не находится в рабочем листе, в этом случае он будет ссылаться на этот лист, даже если он неактивен. – Rory

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