|
36 Кб. |
|
| Дело происходит в Excel
Ошибка "Object required" когда Set fibo = Cells(i, 2).Value
Private Function fibo(sum As Variant) As String
Dim x As Double, i As Integer
Sheets("Лист3").Activate
Range("b1").Value = "0"
Range("b2").Value = "1"
Range("b3").Value = "1"
For i = 4 To 53
fibo = CStr(sum(Cells(i - 1, 2), Cells(i - 2, 2)))
Set fibo = Cells(i, 2).Value
Next i
End Function
|
| |
|
| |
|
|
|
| Set используется для объектной переменной.
Значение ячейки Excel - не может быть Object.
Какой смысл в двойном присвоения для переменной fibo? | |
|
| |
|
|
|
| Понял, но так тоже не работает
пишет несоответствие типов
Private Function Fibo(sum As Variant)
Dim x As Double, i As Integer
Sheets("Лист3").Activate
Range("b1").Value = "0"
Range("b2").Value = "1"
Range("b3").Value = "1"
For i = 4 To 53
Fibo = sum(Cells(i - 1, 2), Cells(i - 2, 2))
Next i
End Function
|
Нужно присвоить значение ф-ции ячейке?
Последовательность считается если код не содержит ф-ию, но мне нужно через ф-цию именно! | |
|
| |
|
|
|
| Ну, во-первых, так:
Fibo = WorksheetFunction.Sum(Cells(...), Cells(...))
А если нужно сложить значения 2-х ячеек, то и вовсе без функции Sum.
А во-вторых, я не понимаю смысла вашей процедуры. Вы в цикле присваиваете функции результат сложения ячеек и больше ничего с этим не делаете. Функция вернет последнее вычисленное значение. | |
|
| |
|
|
|
| Спасибо за подсказку Насчет записи значения - это фрагмент кода.
Без сумм тоже можно, но так надо!
It works!! | |
|
| |