2015-05-31 4 views
0

Я пытаюсь написать свой первый макрос vba для excel 2010. Он должен выполнить несколько длинных вычислений для 200 000 строк и должен заполнить 2 соседних ячейки активной строки. Следующая функция VBA является грубой первой попыткой выполнить вышеизложенное. Проблема заключается в выполнении макроса, я получаю # значение! ошибка. Если я удалю строки «cells» и .Value, он отлично работает и заполняет activecell с соответствующим значением. Что я делаю не так?#значение! ошибка при использовании объекта Range в VBA/Excel

Цените помощь очень.

Public Function someCalculation() As Integer 

    Dim r As Range 
    Dim nrow, ncol As Integer 

    nrow = ActiveCell.Row 
    ncol = ActiveCell.Column 

    r = Cells(nrow, ncol + 1) 
    r.Value = nrow * 100 + ncol 

    someCalculation = nrow * 1000 + ncol 

End Function 
+0

Вы не можете установить значение любой ячейки в книге, кроме ячейки, в которой * User Defined Function * (ака ** UDF **) проживает. Ваше требование о том, чтобы * * нужно было заполнить 2 соседних ячейки в активной строке '*, не может быть выполнено. – Jeeped

ответ

0

«Ячейки» - это объект, вы должны использовать «Установить» с любым объектом для его назначения.

Но невозможно изменить другие ячейки, кроме функции с функцией.

Edit: удалить неверный код

Set r = Cells(nrow, ncol + 1) 
+0

Не повезло, такая же ошибка после изменения. FYI, я использую макрос как «= someCalculation()» в активном листе – kishore

+0

К сожалению, я использую run из VBA ... Нельзя изменять другие ячейки из функции. (http://stackoverflow.com/questions/3844792/vba-how-to-change-the-value-of-another-cell-via-a-function) – grominet

+0

благодарит кучу за указатель, используя ссылку SO. Подход, предоставленный мне, предоставил мне возможность выполнить то, что я хотел сделать. Использование функции массива. По крайней мере, сейчас я получу меня за горб. – kishore

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