Реклама:

Следующий пример автоматически изменяет размеры и транспонирует диапазон выхода:

Sub foo(Rout As Range, Rin As Range ) Dim aClass As mycomponent.myclass

Set aClass = New mycomponent.myclass

aClass.MWFlags.ArrayFormatFlags.AutoResizeOutput = True aClass.MWFlags.ArrayFormatFlags.TransposeOutput = True Call aClass.foo(1,Rout,Rin) Exit Sub

End Sub

Флаги преобразования данных. Они имеют дело с преобразованиями индивидуальных элементов массива. По умолчанию, компоненты Excel Builder считывают установки флагов преобразования данных в свойстве класса MWFlags. Это верно для всех типов Visual Basic, за исключением типов Excel Builder: MWStruct, MWField, MWComplex, MWSparse и MWArg. Каждый из этих типов выставляет свое собственное свойство MWFlags и игнорирует свойства класса, метод которого вызывается. Класс MWArg дается специально для случая, когда отдельный аргумент нуждается в другом описании, отличном от свойств класса по умолчанию.

Два флага преобразования данных, CoerceNumericToType и InputDateFormat, управляют преобразованием чисел и дат от VBA в MATLAB. Если исходная функция MATLAB ожидает double для аргументов, то нужно присвоить double этим аргументам, но это может быть иногда невозможно. Тогда устанавливают флаг CoerceNumericToType, заставляя преобразовать весь числовой вход в double. Для этого можно поместить следующую строку после создания класса, например, aClass, и перед вызовом метода:

aClass.MWFlags.DataConversionFlags.CoerceNumericToType = mwTypeDouble

Флаг InputDateFormat управляет преобразованием даты VBA Например, в строку:

aClass.MWFlags.DataConversionFlags.InputDateFormat = mwDateFormatString

Следующий пример использует объект MWArg для изменения флага преобразования для отдельного аргумента в вызове метода. В этом случае первый аргумент выхода (y1) приводится к типу Date, а второй аргумент выхода (y2) использует текущие флаги преобразования по умолчанию из aClass.

Sub foo(y1 As Variant, y2 As Variant) Dim aClass As mycomponent.myclass

Dim ytemp As MWArg Dim today As Date today = Now

Set aClass = New mycomponent.myclass

Set y1 = New MWArg

yl.MWFlags.DataConversionFlags.OutputAsDate = True Call aClass.foo(2, ytemp, y2, today) yl = ytemp.Value Exit Sub End Sub

Замечание 1. Более подробную информацию о применении флагов и дополнительные примеры см. в документации класса MWFlags.

Замечание 2. MATLAB Builder для Excel создает единственную MCR, когда в приложении возникает первый COM-класс. Эта среда MCR многократно используется и общедоступна для всех последующих экземпляров класса в пределах компонента, и приводит к более эффективному использованию памяти и не требует нового запуска MCR в каждом последующем экземпляре класса. Все экземпляры класса имеют общий доступ к одному рабочему пространству MATLAB и общий доступ к глобальным переменным в m-файлах при построении компоненты. Это делает свойства COM-класса статическими свойствами вместо свойств типа экземпляра.

4.4. Библиотека утилит Excel Builder

В данном параграфе дается описание функций и сервисных классов пакета расширения MATLAB Builder для Excel.


⇐ Предыдущая страница| |Следующая страница ⇒