Função CALLTHIS

Chama um procedimento em um projeto de VBA (Microsoft Visual Basic for Applications).

Sintaxe

PROCEDIMENTO CALLTHIS (" " [" project "],[ **arg1 **, **arg2 **,...])

Parâmetros

Name Obrigatório/opcional Tipo de dados Descrição
procedimento
Obrigatório
String
O nome do procedimento a ser chamado.
Projeto
Opcional
String
O projeto que contém o procedimento.
Arg
Opcional
Número, Cadeia de Caracteres, Data ou Moeda
Passados como parâmetros para o procedimento.

Comentários

No projeto VBA, o procedure é definido conforme a seguir:

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

onde vsoShape é uma referência ao objeto Shape que contém a fórmula CALLTHIS que está sendo avaliada e arg1, arg2 ... são os argumentos especificados nessa fórmula.

Observe que vsoShape é muito parecido com o argumento "this" passado para um procedimento membro C++; daí o nome "CALLTHIS". Na verdade, uma célula que contém uma fórmula que inclui CALLTHIS pode ser lida como: "Chame esse procedimento e passe uma referência à minha forma".

Se o project tiver sido especificado, o Microsoft Visio verificará todos os documentos abertos para encontrar aquele que contém o project e chamará o procedure desse projeto. Se o project for omitido ou nulo (""), o Visio pressuporá que o procedure está no projeto VBA do documento que contém a fórmula CALLTHIS que está sendo avaliada.

Os números em arg1*,arg2... são passados em unidades externas. Por exemplo, se o valor da célula Height for passado de uma forma de 3 centímetros de altura, 3 será o valor passado. Para passar unidades diferentes com um número, utilize a função FORMATEX ou force explicitamente as unidades adicionando um par de unidade de número nulo, por exemplo, 0 pés + Altura.

A segunda vírgula na função CALLTHIS é opcional. Ela corresponde ao número de parâmetros adicionais adicionados ao procedimento. Se você não usar parâmetros adicionais, exceto (vsoShape as Visio.Shape), não adicione a segunda vírgula; use CALLTHIS("",). Se você adicionar dois parâmetros opcionais, por exemplo, utilize CALLTHIS("",,,).

A função CALLTHIS sempre avalia para 0 e a chamada do procedure acontece durante o tempo ocioso, depois da conclusão do processo de recálculo. O procedure poderá retornar um valor, mas será ignorado pelo Visio. O procedure retornará um valor que pode ser reconhecido pelo Visio ao definir a fórmula ou resultar em uma outra célula no documento, mas não na célula que chamou o procedure, a menos que você queira sobrescrever a fórmula CALLTHIS.

A função CALLTHIS difere da função RUNADDON no sentido de que o projeto de um documento não precisa fazer referência a um outro projeto para chamar esse projeto.

Observação

O código VBA, que é invocado quando a instância do Visio avalia uma função CALLTHIS em uma fórmula, não deve fechar o documento que contém a célula que está usando a função, uma vez que ocorrerá um erro de aplicativo e o Visio será fechado.

Se você precisar fechar o documento que contém a célula que está utilizando a função CALLTHIS, utilize uma das técnicas a seguir:

  • Feche o documento a partir de um código que não seja VBA.

  • Feche o documento a partir de um projeto diferente do que está sendo fechado.

  • Envie mensagens de janela para fechar as janelas em vez de fechar o documento.

Para obter mais informações sobre a execução de códigos no Visio, consulte Sobre configurações de segurança e execução de códigos no Visio nesta Referência da ShapeSheet.

Exemplo 1

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

Chamará o procedimento p, localizado em um módulo, e passará o valor de altura em centímetros, como 7,62 cm.

Exemplo 2

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

Chamará o procedimento q, localizado em um módulo, e passará a altura da célula em centímetros e a largura em unidades internas.

Exemplo 3

Utilize o procedimento a seguir no módulo da classe Este documento.

Utilize uma das sintaxes a seguir na célula EventDblClick de uma forma com os procedimentos descritos anteriormente.

CALLTHIS("ThisDocument.A",)

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

CALLTHIS("Este documento.C",,"Clique", " OK.")