Не все функции Excel поддерживаются как методы объекта Application в Visual Basic для приложений.


Для Microsoft Excel 97 и более ранних версий или Microsoft Excel 98 для Macintosh или более ранней версии этой статьи ознакомьтесь с разпусками 107564 .

Аннотация


В Microsoft Visual Basic для приложений не все функции листа Microsoft Excel поддерживаются как методы объекта Application . При попытке использовать один из этих функций с объектом Application появится следующее сообщение об ошибке:
Ошибка во время выполнения "438": объект не поддерживает это свойство или метод

Дополнительная информация


Вы можете создавать процедуры Visual Basic, вызывающие функции листа Microsoft Excel. Функции, доступные в Visual Basic, находятся в объекте Application и перечислены в спискеметоды или Свойства объекта Application в браузере объектов Visual Basic. Большинство функций на листе, недоступных в качестве методов объектаApplication , эквивалентны встроенному оператору или функции Microsoft Visual Basic. Например, функция остат недоступна в качестве метода объекта Application , так как в Visual Basic есть эквивалентный оператор Mod . Оператор Visual Basic работает быстрее, чем функция Microsoft Excel в модуле Visual Basic.

Функции листа Excel, доступные в виде методов в Visual Basic

Примечание. следующие действия предполагают, что вы установили файл справки Visual Basic. Чтобы отобразить список всех функций Microsoft Excel, которые доступны как методы объекта приложения в Visual Basic, выполните указанные ниже действия.
  1. В редакторе Visual Basic введите функции листа в помощнике по Microsoft Office и нажмите кнопку Поиск.
  2. В списке разделов выберите пункт список функций листа, доступных в Visual Basic.
Чтобы найти эквивалентный оператор или функцию Visual Basic функции Microsoft Excel, недоступной в качестве метода объекта приложения , выполните указанные ниже действия.
  1. В редакторе Visual Basic введите имя функции или оператора в помощнике Office и нажмите кнопку Поиск. Например, введите остат.
  2. В списке разделов выберите раздел для функции или оператора. Например, щелкните в разделе оператор Mod .
В приведенной ниже таблице содержатся функции, недоступные в качестве методов объекта Application . В столбце эквивалентов в Visual Basic перечислены функции, которые можно использовать для получения результатов, которые могут быть такими же, как (или аналогичные) результаты, возвращаемые функциями.
   Microsoft Excel                   Visual Basic   worksheet function                equivalent   -------------------------------------------------------------------   ABS()                             Abs function   ATAN()                            Atn function   CHAR()                            CHR function   CODE()                            ASC function   COS()                             Cos function   DATE()                            DATESERIAL function   ERROR.TYPE()                      ERR function   EXACT()                           STRCOMP function   EXP()                             Exp function   INDIRECT()                        No direct equivalent - use Range,                                     Cells, Offset, or any other way of                                     referencing cells.   INFO()                            No direct equivalent - use the                                     following:                                     CURDIR function, the following                                     Application properties (MEMORYTOTAL,                                     MEMORYUSED, MEMORYFREE, VERSION,                                     OPERATINGSYSTEM, CALCULATION, COUNT)   ISBLANK()                         ISEMPTY function   ISREF()                           TYPENAME function   LEN()                             LEN function   LOWER()                           LCASE function   N()                               No equivalent (none needed)   NA()                              No equivalent - use                                     ActiveCell.Value = "#N/A"   RAND()                            RND function   RANDOMIZE()                       Randomize function   SIN()                             Sin function   SIGN()                            Sgn function   SQR()                             Sqr function   SQRT()                            Sqr function   T()                               No equivalent (none needed)   TAN()                             Tan function   TODAY()                           DATE function   TRUNC()                           FIX function   TYPE()                            TYPENAME function   UPPER()                           UCASE function   VALUE()                           VAL function 
Примечание: функция листа Microsoft Excel и эквивалентный оператор или функция Visual Basic не всегда рассчитываются одинаковым образом и могут давать разные результаты, даже если они имеют одинаковое имя. Использование эквивалентных операторов и функций Visual Basic является предпочтительным для повышения скорости и гибкости вычислений. Кроме того, оператор или функция Visual Basic доступны во всех приложениях, использующих Microsoft Visual Basic для приложений. Несмотря на то, что рекомендуется использовать операторы и функции Visual Basic, показанные в приведенном выше списке, существуют и другие способы использования функций листа в макросе Visual Basic (при необходимости). В качестве примера можно использовать лист ATAN в макросе Visual Basic с помощью функций ExecuteExcel4Macro и Evaluate .
   x = Application.ExecuteExcel4Macro("Atan(12)") 
-или-
   x = Application.Evaluate("Atan(12)")