2015-03-06 4 views
1

Я хотел бы написать формулу в конкретных ячейках с функцией.Как написать формулу в ячейке с функцией?

Я написал это, но он не работает, и я не понимаю, почему:

Function formulaCell(x, y) 

ActiveSheet.Cells(x, y).FormulaR1C1 = "=IF(R[-1]C=0,"""",R[-1]C)" 

End Function 

Excel вернуть #VALEUR

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

+0

Подождите. Вы пишете формулу в ячейку, чтобы она меняла формулы в других ячейках? – Taosique

+2

Это случай * «вы не можете добраться отсюда» *. Функции предназначены (и ограничены), чтобы вернуть значение в ячейку, из которой они происходят. Они не могут изменять значения или формулы в других ячейках. TBH, я помню, что кто-то преодолел это, чтобы изменить цвет другой ячейки, вызвав публичный вспомогательный макрос внутри функции, но никогда не вставлять формулу в ячейку. – Jeeped

+2

@Jeeped: Это то, о чем вы думаете? [Использование UDF в Excel для обновления рабочего листа] (http://stackoverflow.com/questions/23433096/using-a-udf-in-excel-to-update-the-workheet) –

ответ

1

Ваша функция будет работать только fine , если функция не вызывается из ячейки.

К примеру, здесь звонок от Sub:

Sub MAIN() 
    Dim msg As String 
    msg = formulaCell(3, 3) 
    MsgBox msg 
End Sub 

Function formulaCell(x As Long, y As Long) As String 
    ActiveSheet.Cells(x, y).FormulaR1C1 = "=IF(R[-1]C=0,"""",R[-1]C)" 
    formulaCell = "Mission Accomplished!!" 
End Function 

UDF() в клетке может только возвращать значение в этой ячейке. A UDF() в Sub может сделать гораздо больше!

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