VBA терпит неудачу при установке диапазона в Excel - PullRequest
0 голосов
/ 17 июля 2011

Используя пример из MSDN Я пытаюсь установить значение ячейки в Excel 2007. Вот шаги, которые я предпринял:

  1. В настройках Excel выберите Enable all Macro's и Trust access to VBA object model.
  2. Создание новой рабочей книги Excel.
  3. Добавить новый модуль VBA.
  4. Включить следующую функцию:

    Function MyTest(rg As Range)
        rg.Value = 1
        MyTest = 1234
    End Function
    
  5. Добавьте формулу =MyTest(B1) в ячейку в A1.

Когда выполняется первая строка MyTest, простой отладчик дает сбой. Безо всякой ошибки он останавливает отладку и отображает #VALUE! в A1. B1 остается пустым.

Я попытался установить .Formula вместо .Value. Я пытался использовать ActiveSheet и Worksheets["Sheet1"] для доступа к рабочим листам. Что может быть причиной этой ошибки?

1 Ответ

6 голосов
/ 17 июля 2011

Функции VBA, которые вызываются из формул ячеек, не могут изменять содержимое ячеек.Это ограничение введено для того, чтобы Excel мог отслеживать зависимости.

Если вам нужно изменить содержимое ячейки, вам придется вызывать VBA с помощью другого механизма, например пользовательской формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...