2015-05-08 4 views
0

Я работаю с VBA для Excel. Каждый раз, когда я запускаю этот код, я получаю ошибку «Определенное приложение или объект». Здесь:VBA Определенная пользователем или объектная ошибка

Sub Test() 
Dim i As Integer, j As Integer, k As Integer, l As Integer, t As Integer 
Dim row As Integer 
Dim Maturite As Integer 
Dim tsup As Double, tinf As Double 
Dim datetaux As Date, datejouissance As Date 
Dim taux As Double 

For i = 2 To 770 
Maturite = Sheets("Em").Cells(i, 19) 
datejouissance = Sheets("Em").Cells(i, 14) 
For l = 2 To 255 
    For k = 0 To 10 
    For t = 1 To 10 
     row = 13 * k + 2 
     datetaux = Sheets("TSR").Cells(row, l) 
    taux = Sheets("TSR").Cells(13 * k + 3, l) 
    If taux <> 0 Then 
    If datejouissance = datetaux Then 
     If 91 <= Maturite And Maturite <= 182 Then 
     tsup = Sheets("TSR").Cells(row + 2, j) 
     tinf = Sheets("TSR").Cells(row + 1, j) 
     Sheets("Em").Cells(i, 21).Value = ((tsup - tinf) * (Maturite - 91)/(182 - 91)) + tinf 
     End If 
End If 
End If 
Next 
Next 
Next 
Next 
End Sub 

я получаю ошибку по адресу:

 tsup = Sheets("TSR").Cells(row + 2, j) 

Я попытался с помощью:.

 tsup = Sheets("TSR").Cells(row + 2, j).Value 

Тип листов ("ТМР") Клетки (строка + 2, j). Значение Double. Но это не работает. Кажется, я не понимаю, в чем проблема.

Заранее спасибо

+0

Можете ли вы показать скриншоты листов 'Em' и' TSR', чтобы мы могли понять, как устроены ячейки? – ja72

ответ

1

Я думаю, что вам может понадобиться, чтобы проверить значение у. Насколько я могу видеть из вашего кода, его значение остается 0. Столбец 0 не существует и приведет к данной ошибке.

+0

Не обращал на это внимания. благодаря –

0

Вы адресуете ячейку, используя целое число j, но вы не присваиваете значение j. Таким образом, VBA заполняет его стандартным значением для целых чисел: 0, направляя ваш звонок на Sheets("TSR").Cells(row + 2, 0) и выдает ошибку.

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