2014-01-20 3 views
1

У меня есть следующий код в качестве макроса в excel. Я думал, что вторая строка объявила записи объекта, а затем 3-я строка установила ее значение. Тем не менее, я всегда получаю ошибку «Object Required».Почему этот код приводит к ошибке «Object required»?

Sub requiredFill() 
    Dim records As Integer 
    Set records = Sheets("Sheet 3").Range("B2").Integer 

Благодарим за помощь!

+0

'Set' требуется только для объекта. Целое число не является объектом. –

+0

'Integer' не является свойством' Range'. Я думаю, вы хотите «Value». Попробуйте 'records = Таблицы (« Лист 3 »). Диапазон (« B2 »). Value' –

+1

' Dim records As Integer' объявляет 16-разрядное целочисленное значение. Если у вас 32-разрядный компьютер, 16-разрядные значения требуют специальной обработки, а код выполняется быстрее с 32-битными значениями. 'Dim records As Long' объявляет 32-битное значение. –

ответ

2

Если я пытаюсь:

Set records = Sheets("Sheet 3").Range("B2").Integer 

или

Set records = Sheets("Sheet 3").Range("B2").Value 

Я получаю объект требуется сообщение.

Если я пытаюсь:

records = Sheets("Sheet 3").Range("B2").Value 

у меня нет. Если вы удалили Set, я не понимаю вашего сбоя.

Однако:

  • Вы смотрите "Лист 3". Вы имели в виду "Sheet3".
  • Ваш код основан на ячейке B2, содержащей целочисленное значение.

Рассмотрим следующий

Sub requiredFill() 
    Dim records As Integer 

    With Sheets("Sheet3").Range("B2") 
    If IsNumeric(.Value) Then 
     records = .Value 
    Else 
     records = 0 
    End If 
    End With 

    Debug.Print records 
End Sub 
+0

Да, это сработало, хотя я оставил зависимость от B2, содержащего целое число, поскольку это ячейка, содержащая формулу COUNT на скрытом и заблокированном листе. – Priesto

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