2015-12-01 3 views
0

Я пытаюсь выполнить автозаполнение через набор столбцов, который изменяется в зависимости от пользовательского ввода. Однако, когда я ссылаюсь на ячейки диапазона, это дает мне ошибку. Ошибка возникает в последней строкеОшибка ссылки на ячейку 1004 Ошибка определения объекта

Dim stocknum As Integer 
stocknum = Sheets("Sheet1").Cells(1, 1) 

Dim a As Integer 
Dim j As Integer 
Dim k As Integer 
Dim LastRow1 As Long 

Dim LastRow() As String 
ReDim LastRow(0 To stocknum + 1) As String 
Dim LastCol As Integer 


j = stocknum + 2 
k = stocknum + 5 
l = stocknum + stocknum + 5 

Worksheets("Sheet1").Activate 
LastRow1 = (Range("B9").End(xlDown).Row) - 7 
LastCol = (Range("B9").End(xlToRight).Column) - 1 


Worksheets("stock_returns").Activate 
Sheets("stock_returns").Cells(3, 2).Formula = "=('Sheet1'!B9-'Sheet1'!B10)/'Sheet1'!B10" 
Sheets("stock_returns").Cells(3, 2).Select 
Selection.AutoFill Destination:=Sheets("stock_returns").Range("Cells(3, 2), Cells(3, LastCol)") 
+0

Быстрый ответ: удалите цитаты вокруг ссылок на ячейки в диапазоне. –

+0

Длительный ответ - это время, чтобы научиться избегать использования .select. Посмотрите [здесь] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) для хорошего старта. –

+1

также удаляет элемент 'Sheets' на autofill ... вызывает ошибку каждый раз –

ответ

0

Попробуйте следующее: Вы совершите ошибку в последней строке. Просто удалите двойную кавычку ("") из части функции Cells().

 Dim stocknum As Integer 
     stocknum = Sheets("Sheet1").Cells(1, 1) 

     Dim a As Integer 
     Dim j As Integer 
     Dim k As Integer 
     Dim LastRow1 As Long 

     Dim LastRow() As String 
     ReDim LastRow(0 To stocknum + 1) As String 
     Dim LastCol As Integer 


     j = stocknum + 2 
     k = stocknum + 5 
     l = stocknum + stocknum + 5 

     Worksheets("Sheet1").Activate 
     LastRow1 = (Range("B9").End(xlDown).Row) - 7 
     LastCol = (Range("B9").End(xlToRight).Column) - 1 


     Worksheets("stock_returns").Activate 
     Sheets("stock_returns").Cells(3, 2).Formula = "=('Sheet1'!B9-'Sheet1'!B10)/'Sheet1'!B10" 
     Sheets("stock_returns").Cells(3, 2).Select 
     Selection.AutoFill Destination:=Sheets("stock_returns").Range(Cells(3, 2), Cells(3, LastCol)) 
Смежные вопросы