2016-05-16 4 views
-2
Dim temp_match As Single 

Dim mid_value As Single 
Dim offset1 As Range 
Dim offset2 As Range 

Dim off_val1 As Range 
Dim off_val2 As Range 

temp_match = Application.Match(temp_time, Range("B2:B20"), 1) - 1 

Set offset1 = Workbooks("Zero Curve").Worksheets("Sheet1").Range("B2:B20") 
Set offset2 = Workbooks("Zero Curve").Worksheets("Sheet1").Range("D1:D20") 

off_val1 = Evaluate("Offset(offset1, temp_match, 0,2)") 
off_val2 = Evaluate("Offset(offset2, temp_match, 0,2)") 

mid_value = Application.Forecast(temp_time, off_val2, off_val1) 

Этот код выдает ошибку:Offset Функция в VBA

"Object variable or With block variable not set".

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

+1

Пожалуйста, см [помощь] и как добавить [mcve] - добавить достаточно подробно на ваш вопрос для нас, чтобы быть в состоянии помочь. –

ответ

0

У вас есть несколько вопросов. Чтобы назначить переменную объекта, вам необходимо использовать Set. Во-вторых, вы не можете ссылаться на переменную VBA в такой строке формулы. В-третьих нет необходимости Evaluate там:

Set offset1 = Workbooks("Zero Curve").Worksheets("Sheet1").Range("B2:B20") 
Set offset2 = Workbooks("Zero Curve").Worksheets("Sheet1").Range("D1:D20") 

Set off_val1 = offset1.Offset(temp_match, 0).Resize(2) 
Set off_val2 = offset2.Offset(temp_match, 0).Resize(2)