Функция CALLTHIS. Справка Visio 2010

Главная страница /  Полезная информация по таблице свойств (ShapeSheet™)  / Справочник по таблице свойств  /  Список функций по алфавиту  / Список функций по категориям > Управление вызовами

Функция CALLTHIS

Вызывает процедуру в проекте Microsoft Visual Basic для приложений (VBA).

Синтаксис

CALLTHIS("procedure",["project"],[arg1,arg2,...])

Parameters

Имя

Требуется/Необязательно

Тип данных

Описание

procedure

Требуется

Строка

Имя вызываемой процедуры.

project

Необязательно

Строка

Проект, содержащий процедуру.

arg

Необязательно

Число, строка, дата или денежный

Передаются в качестве параметров процедуры.

Заметки

В проекте VBA процедура (procedure) определяется следующим образом:

procedure(vsoShape As Visio.Shape [arg1 As type, arg2 As type...]),

где vsoShape — ссылка на объект Shape, содержащий вычисляемую формулу CALLTHIS, а arg1, arg2 — аргументы, указанные в формуле.

Обратите внимание, что переменная vsoShape аналогична аргументу "this", который передается процедуре C++; поэтому функция получила название "CALLTHIS". Ячейка, содержащая формулу с CALLTHIS, означает следующее: "Вызвать эту процедуру и передать ей ссылку на данную фигуру".

Если задан аргумент project, выполняется поиск проекта во всех открытых документах, а затем вызывается процедура (procedure) в этом проекте. Если аргумент project опущен или равен NULL (""), предполагается, что procedure находится в проекте VBA документа, который содержит вычисляемую формулу.

Числа в аргументах arg1, arg2... передаются во внешних единицах измерения. Например, для ячейки Height фигуру высотой 3 см передается значение 3. Чтобы передать число с другой единицей измерения, используйте функцию FORMATEX или принудительно примените единицы измерения путем добавления нуля и единицы измерения, например: 0 cm + Height.

Вторая запятая в функции CALLTHIS является необязательной. Число запятых соответствует количеству дополнительных параметров, добавляемых в процедуру. Если не используются дополнительные параметры, кроме (vsoShape as Visio.Shape), не добавляйте вторую запятую: используйте CALLTHIS("",). Если добавляются два дополнительных параметра, используйте CALLTHIS("",,,).

Функция CALLTHIS всегда возвращает 0, а вызов процедуры (procedure) выполняется во время простоя после завершения повторного вычисления. Procedure может возвращать значение, но оно игнорируется. Чтобы значения, возвращаемые procedure, распознавались Visio, необходимо задать формулу или результат другой ячейки документа. При этом нельзя использовать ячейку, которая вызвала процедуру procedure, если только не требуется перезаписать формулу CALLTHIS.

Функция CALLTHIS отличается от функции RUNADDON тем, что проект в документе необязательно должен ссылаться на другой проект, чтобы вызвать его.

  Примечание.

Код VBA, который вызывается при вычислении функции CALLTHIS в формуле, не должен закрывать документ с ячейкой, использующей функцию. В противном случае возникнет ошибка приложения и Visio завершит работу.

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

*         Закройте документ с помощью кода, который не является кодом VBA.

*         Закройте документ из другого проекта (который не требуется закрывать).

*         Создайте оконные сообщения, позволяющие закрывать окна документа, а не сам документ.

Дополнительные сведения о выполнении кода в Visio см. в разделе Параметры безопасности и выполнение кода в Visio данного справочника по ShapeSheet.

Пример 1

CALLTHIS("p",,FORMATEX(Height,"#.00 u",,"cm"))

Вызов процедуры p, расположенной в модуле, и передача значения Height в сантиметрах (например, "7.62 cm").

Пример 2

CALLTHIS("q",,0 cm+Height,Width)

Вызов процедуры p, расположенной в модуле, и передача высоты ячейки в сантиметрах и ширины во внутренних единицах.

Пример 3

Используйте указанную ниже процедуру в модуле класса ThisDocument.

 

Sub A(vsoShape As Visio.Shape)

    MsgBox "Click OK."

End Sub

Sub B(vsoShape As Visio.Shape, strA As String)

    MsgBox strA

End Sub

Sub C(vsoShape As Visio.Shape, strA As String, strB As String)

    MsgBox strA & strB

End Sub

Используйте любой из указанных примеров синтаксиса в ячейке EventDblClick фигуры с предыдущими процедурами.

CALLTHIS("ThisDocument.A",)

CALLTHIS("ThisDocument.B",,"Click")

CALLTHIS("ThisDocument.C",,"Click", " OK.")


© Корпорация Майкрософт (Microsoft Corporation). Все права защищены.