2015-12-23 14 views
0

У меня есть строка кода, который отображает приложения или объекта определяется ошибка, я понятия не имею, почемуприложения или объекта определяется ошибка - Excel VBA .range (клетки

filenm17 = "DSR Consolidated" 
findstring16 = "21" 

filenm17 и findstring16 являются. оба определены как строки. Я попытался удалить findstring16 и заменить ее с формулой, чтобы получить findstring16 (это ссылка на ячейку .value), но до сих пор не работает.

Workbooks(filenm17).Sheets("5").Range(Cells(67, findstring16 + 2), _ 
           Cells(440, findstring16 + 2)) = firstarray 

Пожалуйста, помогите!

ответ

2

Без квалифицированного рабочего листа ваш Cells() будет ссылаться на Activesheet: если это не «5», то они не соответствуют Range(), и это приведет к ошибке, которую вы получаете.

Try:

With Workbooks(filenm17).Sheets("5") 
    .Range(.Cells(67, CLng(findstring16) + 2), _ 
      .Cells(440, CLng(findstring16) + 2)).Value = firstarray 
End With 
+0

Спасибо @ Тим Уильямс, я имел обыкновение использовать, например: 'Range (ws.Cells (1,1), ws.Cells (10,10))' 'NOT WS .Range (ws.Cells (1,1), ws.Cells (10,10)) ', это нормально? , (ws - рабочий лист). – Fadi

+0

Спасибо! Прекрасно работает! –

+1

@Fadi - это будет работать в регулярном модуле, но не будет работать в рабочем листе для любого рабочего листа, отличного от 'ws', поскольку область для неквалифицированного« Range() »в модуле листа всегда является листом. –

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