Pesquisar este blog

quinta-feira, 26 de dezembro de 2013

FUNÇÃO PARA MANIPULAÇÃO DE STRING - CHR

CHR


    Função empregada para retornar o caractere associado ao código de caractere fornecido como argumento, utilizando esta sintaxe:

Chr(CódigoDoCaracter)

Onde, 
  • CódigoDoCaracter; argumento obrigatório, consistindo de um número que identifique um caractere na tabela ASCII ou UNICODE. 
As seguintes considerações são válidas para a função Chr: 
  • A faixa padrão de caracteres varia de 0 a 255 (inclusive). Em sistemas UNICODE (como o Chinês), este valor pode variar de 128 a 32768;
  • Códigos compreendidos entre 0 a 31 são códigos ASCII não imprimíveis, utilizados pelo sistema operacional, Chr(0) retorna Null, Chr(13) = Enter ou Carriage Return, Chr(9) = Tab etc.;
  • Chr() é útil em eventos de tecla (KeyDown, KetUp e KeyPress) para identificar o código das teclas pressionadas pelo usuário. KeyDown e KeyUp diferenciam as teclas esquerda e direita (como Shift, Ctrl e Alt) enquanto KeyPress não as diferencia.
Exemplo: No próximo exemplo, demonstra-se como empregar a função Chr() para verificar qual foi a tecla pressionada, empregando-se a janela Verificação Imediata.

?Chr(48)       ‘Retorna 0
?Chr(49)       ‘Retorna
?Chr(65)       ‘Retorna A
?Chr(66)       ‘Retorna B


Até a Próxima!!

FUNÇÃO PARA MANIPULAÇÃO DE STRING - FORMAT

FORMAT


    Função empregada para formatar uma expressão de acordo com as instruções contidas no código de formatação fornecido, utilizando esta sintaxe:

Format(Expressão[,Formato[,PrimeiroDiaDaSemana[,PrimeiraSemanaDoAno]]])

Onde, 
  • Expressão: argumento obrigatório, consistindo de qualquer expressão válida;
  • Formato: argumento opcional, consistindo de um nome ou formato válido, passível de ser aplicado a Expressão, ou de uma string de formatação. Ambos fornecidos entre aspas;
  • PrimeiroDiaDaSemana: argumento opcional, é uma constante que especifica o qual é o primeiro dia da semana (domingo, segunda, terça...) valor padrão para este argumento opcional é “domingo” (valor 1). Outros valores possíveis podem ser encontrados na tabela a seguir: 









  • PrimeiraSemanaDoAno: argumento opcional, é uma constante que especifica qual será considerada a primeira semana do ano. A menos que seja explicitamente especificado, o VBA supõe que a primeira semana do ano é aquela onde se encontra o dia 1 de janeiro.






Até a Próxima!!

FUNÇÃO PARA MANIPULAÇÃO DE STRING - FORMATANDO NÚMEROS

Formatando Números


    As seguintes considerações são válidas para a função Format para a Formatação de Números: 
  • Format sempre devolve uma string numérica;
  • Se Expressão for um número e você não especificar o formato desejado, o valor retornado por Format será similar ao valor retornado pela função Str, excetuando-se pelo fato de que números formatados como Str incluem um espaço à sua esquerda para indicar o sinal do número, enquanto que Format, sem qualquer argumento, não fornece este espaço;
  • Empregue os formatos nomeados do VBA para utilizar os padrões definidos no Painel de Controle do Windows, empregue as constantes citadas na próxima tabela; 






























  • Além dos formatos nomeados, você também pode se valer da segunda tabela para criar formatos numéricos definidos pelo usuário; 


  • Números formatados com a função Format podem possuir até quatro seções distintas de formatação, separadas por vírgulas que, se utilizadas, atuam na formatação do número de acordo com a seguinte regra:
    • Apenas uma seção: todos os valores são formatados de acordo com o formato empregado;
    • Duas seções: a primeira seção aplica-se a números positivos e zero, enquanto a segunda seção aplica-se a números negativos;
    • Três seções: a primeira seção aplica-se a números positivos, a segunda a números negativos e a terceira ao valor zero;
    • Quatro seções: a primeira seção aplica-se a números positivos; a segunda a números negativos; a terceira ao valor zero; e a quarta a valores nulos (Null). 
Exemplo: Os exemplos a seguintes indicam como empregar a função Format para formatar números com seus diversos argumentos:

?Format(10000)                                                 ‘Resulta em 10000
?Format(10000, “#,###.00)                               ‘Resulta em 10,000.00
?Format(1123.4560, “#,###.00)                        ‘Resulta em 1,123.46
?Format(-2, “0.0;(0.0)”)                                    ‘Resulta em (2.0) (negativo entre parênteses)
?Format(0, “0.0;(0.0);”zero”)                            ‘Resulta em “zero” (sem as aspas)
?Format(0, “$0.00;($0.00);”)                             ‘Resulta em $0.00   
?Format(100000, “#,##0.00;($#.##0.00);”)       ‘Resulta em $100,000.00
?Format(100000, “0.0E+”)                                ‘Resulta em 1.0E+5


Até a Próxima!!

quinta-feira, 31 de outubro de 2013

FUNÇÕES MATEMÁTICAS DERIVADAS

Funções Matemáticas Derivadas


    Você pode produzir diversas outras funções trigonométricas a partir das funções básicas Sin, Cos, Tan e Atn, empregando a seguinte tabela de fórmulas:





















Até a Próxima!!

FUNÇÃO MATEMÁTICA – SGN

Sgn


    Função empregada para retornar um valor inteiro indicando o sinal de uma expressão, empregando a seguinte sintaxe:

Sgn(Expressão)

Onde,
  • Expressão: argumento obrigatório, que resulta em um número cujo sinal será avaliado, retornado:







Exemplo: Empregue a janela Verificação Imediata para testar o valor retornado pela função Sng:

?Sng(5)        ‘Retorna 1
?Sng(-5)       ‘Retorna -1
?Sng(0)        ‘Retorna 0

Até a Próxima!!

FUNÇÃO MATEMÁTICA – TAN

Tan


   Função empregada para retornar o valor da tangente de um ângulo ou expressão, utilizando a seguinte sintaxe:

Tan(Expressão)

Onde,
  • Expressão: argumento obrigatório, consistindo de qualquer expressão numérica válida.
As seguintes considerações são válidas para a função Tan:
  • Tan calcula a tangente trigonométrica (ou inclinação), consistindo da razão entre o comprimento do lado oposto ao ângulo dividido pelo comprimento do lado adjacente;
  • Para converter o argumento recebido por Tan de radianos para graus, multiplique-o pelo p/180.
Exemplo: Empregue a janela Verificação Imediata para testar a função Tan, digitando:

?Tan(3.14159265358979/4)   ‘Retorna 0.999999999999998 @ 1 (Tangente de 45°)

Até a Próxima!!

FUNÇÃO MATEMÁTICA – SQR

Sqr


   Função empregada para retornar a raiz quadrada de uma expressão, utilizando a seguinte sintaxe:

Sqr(Expressão)

Onde,
  • Expressão: argumento obrigatório, consistindo de um valor numérico maior ou igual a zero;
  • Você pode obter qualquer raiz (cúbica, quadrática...) empregando o operador “^” para elevar um número a uma potência fracionária. Por exemplo, para encontrar a raiz cúbica de 27, empregue 27^(1/3), para raiz quadrática = 27^(1/4) etc.
Exemplo: Empregue a janela Verificação Imediata para verificar o valor retornado pela função Sqr.

?Sqr(144)       ‘Retorna 12
?144^(1/2)      ‘Retorna 12

Até a Próxima!!

FUNÇÃO MATEMÁTICA – SIN

Sin


   Função empregada para retornar o valor do seno de um ângulo ou expressão, utilizando a seguinte sintaxe:

Sin(Expressão)

Onde,
  • Expressão: argumento obrigatório, consistindo de qualquer expressão numérica válida que expresse o valor do ângulo em radianos.
As seguintes considerações são válidas para a função Sin:
  • Sin calcula o valor do comprimento do lado oposto ao ângulo recebido como argumento;
  • O resultado retornado por Sin varia de –1 a 1;
  • Para converter o valor retornado por um ângulo de graus para radianos, multiplique-o por p/180.
Exemplo: Empregue a janela de Verificação Imediata para testar a função Sin, dgitando:

?Sin(0)                                   ‘Retorna 0
?Cos(3.14159265358979/2)  ‘Retorna 1

Até a Próxima!!

FUNÇÃO MATEMÁTICA – RND

Rnd


   Função empregada para gerar um número aleatório, utilizando esta sintaxe:

Rnd[(Expressão)]

Onde,
  • Expressão: argumento opcional que, se fornecido, permite controlar o próximo número aleatório a ser gerado.
As seguintes considerações são válidas para a função Rnd:
  • Variando-se o valor de Expressão, pode-se controlar o resultado dos números aleatórios gerados por Rnd, de acordo com a seguinte tabela:








  • Rnd sempre retorna um número entre 0 e 1 (0 < Rnd < 1);
  • Rnd sempre emprega o último número gerado como semente para o próximo;
  • Fornecendo-se o valor inicial de Expressão, obtém-se sempre a mesma sequência de número aleatórios, pois todas as chamadas sucessivas empregam o número anterior como semente para o próximo;
  • Para alterar a seqüência de número aleatórios tornando-os imprevisíveis, empregue a instrução Randomize antes de chamar a função Rnd;
  • Para repetir a seqüência inicial de números aleatórios, empregando uma mesma semente, utilize Rnd com o argumento –1 e, logo em seguida, empregue a instrução Randomize com um argumento definido;
  • Para produzir números aleatórios inteiros, variando entre uma faixa determinada de dados, empregue a seguinte fórmula:
Int(LimiteSuperior – LimiteInferior) * Rnd + LimiteInferior

Exemplo: Empregue a janela Verificação Imediata para observar como Rnd gera números aleatórios.

?Rnd(-1)      ‘Retorna 0.224007 
?Rnd            ‘Retorna 3.584582E-02
?Rnd            ‘Retorna 8.635235E-02
?Rnd(-1)      ‘Reinicia a sequência
?Rnd            ‘Retorna 3.584582E-02
Randomize   ‘Quebra a sequência
?Rnd             ‘Retorna 0.5306273

Até a Próxima!!

FUNÇÃO MATEMÁTICA – ROUND

Round


   Função empregada para arredondar um valor para um número especificado de casas decimais, utilizando esta sintaxe:

Round(Expressão[,CasasDecimais])

Onde,
  • Expressão: argumento obrigatório, consistindo de um número real ou expressão que resulta em um número real a ser arredondado;
  • CasasDecimais: argumento opcional, indicando quantas casas à direita do separador decimal serão mantidas no arredondamento do número. Se omitido, o número será arredondado para um valor inteiro.
Exemplo: Empregue a janela Imediata para verificar como Round funciona.

?4*Atn(1)                      ‘Retorna o valor Pi = 3.14159265358979
?Round(4*Atn(1),5)      ‘Retorna 3.14159 (arredondado para 5 decimais)

Até a Próxima!!

FUNÇÃO MATEMÁTICA – RANDOMIZE

Randomize


   Instrução empregada para reinicializar a geração de números aleatórios, utilizando esta sintaxe:

Randomize[Expressão]

Onde,
  • Expressão: argumento opcional, consistindo de qualquer expressão numérica válida, empregada como semente para a geração de novos números aleatórios.
As seguintes considerações são válidas para a instrução Randomize:
  • Randomize emprega o valor de Expressão para criar uma nova seqüência de números aleatórios empregando-se a função Rnd;
  • Se Randomize for omitido, a função Rnd (sem argumentos) usará sempre o mesmo número para gerar o primeiro número aleatório usando o último número aleatório gerado como Semente para o próximo número;
  • Se Expressão for omitido, Randomize irá empregar o valor retornado pelo relógio do sistema como semente para a geração de próximos números aleatórios;
  • Para repetir uma seqüência de números aleatórios, empregue a função Rnd, fornecendo-lhe como argumento –1, antes de executar a instrução Randomize.
Exemplo: O próximo exemplo emprega a instrução Randomize para inicializar a rotina de geração de números aleatórios entre 1 e 10, usando como semente o valor retornado pela função Timer (número de segundos decorridos desde de 0:00h):

Function NúmeroAleatório() as Doublé

  Randomize Timer
  NúmeroAleatório = Int(Rnd * 10) + 1)

End Function

Até a Próxima!!

FUNÇÃO MATEMÁTICA – LOG

Log


    Função empregada para calcular o valor do logaritmo neperiano (base e) de uma expressão, utilizando esta sintaxe:

Log(Expressão)

Onde,
  • Expressão: argumento obrigatório, consistindo de qualquer expressão numérica válida maior do que zero.
As seguintes considerações são válidas para a função Log:
  • Logaritmos naturais ou neperianos são aqueles que possuem a base igual a 2.71828182845905;
  • Para calcular o logaritmo em outra base (base n), empregue a seguinte fórmula:
Logn = Log(x)/Log(n)

Exemplo: Experimente digitar estes valores na janela de Verificação Imediata:

?Log(1)              ‘Retorna 0 (zero)
?Log(Exp(1))     ‘Retorna 1 (log de e)

Até a Próxima!!

FUNÇÃO MATEMÁTICA – INT, FIX

Int, Fix


    Função empregadas para retornar a parte inteira de uma expressão, utilizando as seguintes sintaxes:

Int(Expressão)
Fix(Expressão)

Onde,
  • Expressão: argumento obrigatório, consistindo de qualquer expressão numérica válida. Se Expressão resultar no valor Null, Abs retornará Null (propagação do Null).
As seguintes considerações são válidas para as funções Int e Fix:
  • Ambas as funções removem a parte fracionária do número retornado apenas sua parte inteira;
  • Se expressão for um número negativo, a função Int retorna o primeiro número inteiro negativo que seja maior ou igual à expressão Int(-9.6) = -10;
  • Se expressão for um número negativo, a função Fix retorna o primeiro número inteiro negativo que seja maior ou igual à expressão Fix(-9.6) = -9;
  • A função Fix é equivalente à seguinte operação: Sgn(Expressão) * Int(Abs(Expressão)).
Exemplo: Experimente digitar estes valores na janela de Verificação Imediata:

?Fix(9.6)        ‘Retorna 9
?Fix(-9.6)       ‘Retorna -9
?Int(9.6)         ‘Retorna 9
?Int(-9.6)        ‘Retorna 10

Até a Próxima!!

FUNÇÃO MATEMÁTICA – EXP

Exp


    Função empregada para retornar o valor do número e (2.718282 = base dos logaritmos naturais ou também chamado de antilogaritmo) elevado a uma potência (expressão). Empregando esta sintaxe:

Exp(Expressão)

Onde,
  • Expressão: argumento obrigatório, consistindo de qualquer expressão numérica válida <= 709.782712893.
Exemplo: Empregue a janela Verificação Imediata para testar a função Exp, digitando:

?Exp(1)   ‘Retorna o valor de e = 2.71828182845905

Até a Próxima!!

FUNÇÃO MATEMÁTICA - COS

Cos


    Função empregada para retornar o valor do coseno de um ângulo ou expressão, utilizando esta sintaxe:

Cos(Expressão)
  • Expressão: argumento obrigatório, consistindo de qualquer expressão numérica válida que expresse o valor do ângulo em radianos.
As seguintes considerações são válidas para a função Cos:
  • Cos calcula o valor do comprimento do lado adjacente ao ângulo recebido como argumento;
  • O resultado retornado por Cos varia de –1 a 1;
  • Para converter o valor retornado por um ângulo de graus para radianos, multiplique-o por p/180.
Exemplo: Empregue a janela Verificação Imediata para testar a função Cos, digitando:

?Cos(0)                                  ‘Retorna 1
?Cos(3.14159265358979)    ‘Retorna –1

Até a Próxima!!

FUNÇÃO MATEMÁTICA - ATN

Atn


    Função empregada para retornar o valor do arco-tangente (ângulo) de um número ou expressão, utilizando esta sintaxe:

Atn(Expressão)

Onde,
  • Expressão: argumento obrigatório, consistindo de qualquer expressão numérica válida.
As seguintes considerações são válidas para a função Atn:
  • Atn calcula o valor do ângulo adjacente de um triângulo retângulo, esperando receber como argumento a razão entre o comprimento do lado oposto ao ângulo dividido pelo lado adjacente ao ângulo;
  • Atn ou arco-tangente é a função trigonométrica inversa de Tan (tangente) retornando o valor retornado o valor em radianos (variando de -p/2 à + p/2);
  • Para converter o valor retornado por Atn de radianos para graus, multiplique-o por 180/p.
Exemplo: Empregue a janela Verificação Imediata para testar a função Atn, digitando:

?Atn(1)                     ‘Resultado = 0.785398163397448 radianos
?Atn(1)*180/3.115   ‘Resultado = 45.0013272040556 graus
?4*Atn(1)                 ‘Resultado = valor de Pi = 3.14159265358979

Até a Próxima!!

FUNÇÃO MATEMÁTICA - ABS

Abs


    Função empregada para o valor absoluto (módulo) de um número ou expressão, utilizando esta sintaxe:

Abs(Expressão)

Onde,
  • Expressão: argumento obrigatório, consistindo de qualquer expressão numérica válida. Se Expressão resultar no valor Null, Abs retornará Null (propagação do Null).
Exemplo: Experimente digitar estes valores na janela de Verificação Imediata:

?Abs(-1)  ‘Retorna 1
?Abs(1)    ‘Retorna 1

Até a Próxima!!

quarta-feira, 30 de outubro de 2013

FUNÇÃO E INSTRUÇÃO DE CONTROLE DO FLUXO DE EXECUÇÃO – WITH...END WITH

With...End With


    Instrução empregada para executar uma série de instruções dentro de um laço, referenciando uma única vez um objeto, de forma a acessar mais rapidamente suas propriedades e reduzir a sintaxe empregada na codificação,utilizando esta sintaxe

With Objeto

           [Instruções]

End With

Onde,
  • Objeto: argumento obrigatório, indicando o nome do o nome do objeto ou tipo definido pelo usuário cujas propriedades você deseja acessar;
  • Instruções: argumento opcional, indica a existência de instruções que serão executadas dentro do laço With...End With;
  • End With: instrução que determina o fim do laço With. Após esta instrução, quaisquer propriedades do Objeto deverão ser acessadas utilizando-se a sintaxe completa, na forma Objeto.Propriedade.
As seguintes considerações são válidas para a instrução With...End With:
  • With permite tornar mais enxuta a sintaxe de acesso às propriedades do objeto referenciado, diminuindo a quantidade de texto a ser digitado e aproveitando-se das características de AutoListar Membros do VBA (basta pressionar o caractere “.” Dentro de um laço With para que uma lista com todas as propriedades do objeto referenciado pela instrução sejam exibidos para você);
  • Não é possível alterar o objeto referenciado dentro de um laço With;
  • É possível aninhar laços, porém, quando um laço mais interno está sendo executado, propriedades idênticas contidas no objeto do laço With mais externo serão mascaradas, exigindo o emprego da sintaxe completa para o objeto de forma a acessá-las;
  • Jamais empregue a instrução GoTo ou GoSub para sair ou entrar em um laço With...End With. Apesar de o VBA permitir esta abordagem, poderão ocorrer erros inesperados em seu aplicativo.
Exemplo: O exemplo a seguir emprega um laço With...End With para referenciar uma vez uma caixa de listagem no Microsoft Access e alterar suas propriedades.

Sub txtIdade_AfterUpdate()

   With txtIdade

            .BackColor = 0        ‘Fundo preto
            .ForeColor = 256     ‘Letras vermelhas
            .Enabled = False
            .Locked = True


   End With

Até a Próxima!!

FUNÇÃO E INSTRUÇÃO DE CONTROLE DO FLUXO DE EXECUÇÃO – WHILE...WEND

While...End


    Instrução empregada para executar uma série de instruções em laço no código, até que enquanto uma determinada expressão for verdadeira (similar a Do While...Loop), utilizando esta sintaxe:

While Condição

     [Instruções]

Wend

Onde,
  • Condição: argumento obrigatório, constituindo-se de uma expressão numérica ou string que retorne o valor True;
  • Instruções: instruções a serem executadas enquanto Condição for verdadeira;
  • Wend: delimita o fim do laço While...Wend. Quando a condição for false, a próxima linha de código após Wend será executada.
As seguintes considerações são válidas para a instrução While...Wend:
  • Instruções While...Wend podem ser aninhadas indefinidamente;
  • While...Wend funciona de forma idêntica a Do...Loop, excetuando-se pelo fato que Do...Loop permite que as instruções contidas dentro do laço sejam executadas pelo menos uma vez, desde que a instrução While esteja no final do laço (Do...Loop While <condição>). Quando se emprega While ,condição>...Wend, as instruções do laço podem não ser executadas uma única vez, desde que <condição> seja falsa na primeira vez que a instrução While é executada.
Exemplo: O exemplo a seguir demonstra como empregar uma instrução While...Wend para processar um arquivo aberto com ADO – Active Data Objects, registro a registro, até atingir o fim do arquivo, desde que a tabela ou conjunto de registros representado pela variável rs possua pelo menos um registro de dados.

Sub ProcessoRegistro(rs as ADODB.RecordSet)

  Dim intl as Integer
 
While Not rs.EOF

           For intl = 0 to rs.Fields.Count

                  Debug.Print rs.Fields(intl).Name & “=”, rs.Fields(intl).Value

           Next

Wend

End Sub

Até a Próxima!!

FUNÇÃO E INSTRUÇÃO DE CONTROLE DO FLUXO DE EXECUÇÃO – STOP

Stop


    Instrução empregada para suspender temporariamente a execução do código de um procedimento, permitindo o exame do valor de suas variáveis, utilizando esta sintaxe:

Stop

As seguintes considerações são válidas para a instrução Stop:
  • Stop paralisa a execução do código no ponto onde se encontra, da mesma forma empregada quando se estabelece um ponto de interrupção;
  • Stop deve ser utilizada apenas no ambiente de desenvolvimento do VBA. Se a instrução Stop for encontrada em um aplicativo compilado (arquivo.exe), ela se comportará como uma instrução End, provocando a finalização do aplicativo, perda do valor das variáveis e liberação da memória por ele utilizada.
Exemplo: O exemplo a seguir demonstra como paralisar o código de um laço que percorre todos os controles de um formulário, quando o mesmo encontra um botão de comando:

Function PesquisaCtrl()

  Dim ctl as Control

  For Each ctk In Me.Controls

        If TypeOf ctl Is CommandButton Then

            Stop

        End If

   Next

End function

Até a Próxima!!

FUNÇÃO E INSTRUÇÃO DE CONTROLE DO FLUXO DE EXECUÇÃO – SHELL

Shell




    Função empregada para se executar um programa externo qualquer (como um aplicativo DOS) e retornar uma Variant contendo um valor Doublé, indicando se o programa executou-se ou não com sucesso, utilizando esta sintaxe:

Shell(CaminhoParaOAplicativo[,TioDeJanela])

Onde,
  • CaminhoParaOAplicativo: argumento obrigatório, pode ser uma string, variável string ou variant contendo uma string, indicando o caminho e nome completo do aplicativo a ser executado, incluindo sua extensão;
  • TipoDeJanela: argumento opcional, na forma de um número Integer (ou variant contendo um Integer), indicando como a janela do programa a ser executado será aberta. Se TipoDeJanela for omitida, o programa será executado minimizado e com o foco do sistema. São válidos os seguintes valores para o argumento TpoDeJanela:








As seguintes considerações são válidas para a instrução Shell:
  • Se a função Shell conseguir executar com sucesso o aplicativo solicitado, ela irá retornar um número Inteiro Longo indicando a identidade única atribuída pelo Windows ao programa. Se o programa não puder ser executado, Shell retornará zero;
  • Shell executa os programas de forma assíncrona, indicando que após a execução da instrução Shell, o programa solicitado pode permanecer em execução até retornar sua ID para o procedimento;
  • Para confirmar que um programa foi executado com a instrução Shell, você deverá utilizá-la sempre em um laço Do...Loop, até que Shell retorne a ID do programa ou retorne zero, indicando sua falha, desta forma:
Dim varID as variant ‘varID possui Empty o ser declarado

Do While varID is Empty

      VarID = Shell (<Aplicativo>, TipoDeJanela)

Loop

Exemplo: O exemplo a seguir demonstra como empregar a função Shell() para executar o comando DOS Tree.com, que retorna toda a estrutura de árvore do disco rígido atual, a partir de um arquivo de lote chamado Tree.bat. O arquivo Tree.bat direciona a saída do comando Tree.com para um arquivo texto c:\Tree.txt. O código do arquivo de lote Tree.bat é:

C:\Windows\system32\tree.com c:\ /a > c:\tree.txt

    A função GerarTree() emprega a instrução Shell() do VBA para executar o arquivo de lote Tree.bat e gerar o arquivo Tree.txt, contendo toda a estrutura de diretório do disco rígido.

    Ela emprega então a instrução Open e as funções Input() e LOF() do VBA para ler o arquivo Tree.txt e retorná-lo como valor de retorno da função GerarTree()

Public Function GerarTree() As String

  Dim varID As Variant
  Dim strTree As String

    Do While IsEmpty(varID)

          VarID = Shell(“c:\tree.bat”)

    Loop

       If varID <> 0 Then

          Open “c:\Tree.txt” For Input As #1
          StrTree = Input(LOF(1),1)
          Close #1        

       End if  

   GerarTree = strTree

End function

    Para verificar a estrutura de pasta de seu disco rígido, atribua o valor retornado por esta função para uma caixa de texto qualquer de um formulário (no Visual Basic, esta caixa da texto deverá ter a propriedade MultiLine definida para True), utilizando esta sintaxe:

TxtText1 = GerarTree()

Até a Próxima!!

FUNÇÃO E INSTRUÇÃO DE CONTROLE DO FLUXO DE EXECUÇÃO – SWITCH

Switch


    Função empregada para avaliar uma lista de expressões em seqüência, da esquerda para a direita, e retorna o valor ou resultado da expressão associado à primeira expressão avaliada como True na lista de expressões, utilizando esta sintaxe:

Switch(Expressão1, Valor1[,Expressão2, Valor2]...[,Expressão-n, Valor-n])   

Onde,
  • Expressão 1-n: argumento obrigatório, indica uma expressão passível de ser avaliada pelo VBA que retorne True ou um valor numérico (0 = False);
  • Valor 1-n:  argumento obrigatório, indica o valor a ser retornado pela função Switch, quando a primeira expressão avaliada, da esquerda para a direita, retornar True.
As seguintes considerações são válidas sobre a função Switch():
  • Switch() funciona como uma extensa instrução If..Then...ElseIf...End, utilizando uma única linha de código. Ela exige que se empregue sempre um par Expressão|ValorRetornado, ou ocorrerá um erro em tempo de execução;
  • Se nenhuma das expressões da lista retornar True, Switch() retornará o valor Null;
  • Qualquer dos pares de expressões|valores pode também retornar Null;
  • Cuidado ao empregar  Switch, pois apesar de retornar apenas o primeiro valor cuja expressão associada seja True, toas as expressões existentes na lista serão avaliadas, podendo fornecer resultados ou erros inesperados no código.
Exemplo: O exemplo a seguir demonstra como empregar a função Switch() para retornar diferentes alíquotas de imposto de renda, dependendo do valor da variável:

Alíquota = Switch(Salário < 1058.01,0, Salário >= 1058.01 and Salário < 2115.01,0.15, Salário > 2115.01 and Salário <= 12696, 0.275, Salário > 12696,423.08)

Até a Próxima!!

FUNÇÃO E INSTRUÇÃO DE CONTROLE DO FLUXO DE EXECUÇÃO – SELECT CASE

Select Case


    Instrução empregada para executar um ou mais grupos de instruções, dependendo do valor da expressão avaliada na cláusula Select Case, utilizando esta sintaxe:

Select Case Expressão
    [Case ValorDaExpressão1
      [Instruções1]
...
[Case ValorDaExpressãon
      [Instruçõesn]
...
Case Else
     [Instruçõeselse]
End Select

Onde, 
  • Expressão argumento obrigatório, indicando a expressão a ser avaliada antes de se tornar uma decisão;
  • ValorDaExpressão1-n: argumento obrigatório, indicando um ou mais valores possíveis para Expressão. Se expressão for igual a ValorDaExpressão1-n, as instruções que seguem a cláusula Case serão executadas;
  • Intruções1-n: lista de comandos a serem executados no caso de Expressão = ValorDaExpressão;
  • Case Else: argumento opcional, indica a cláusula a ser executada quando Expressão é diferente de qualquer um dos valores contidos nas cláusulas Case anteriores;
  • End Select: argumento obrigatório, indica o fim da instrução Select Case.
As seguintes considerações são válidas para a instrução Select Case: 
  • Select Case permite avaliar uma única vez uma expressão e executar uma série de comandos, dependendo do valor que a expressão tomou. Ela é muito mais eficiente que uma instrução If...Then...ElseIf...Else, que exige efetuar novamente o teste para Expressão a cada cláusula ElseIf;
  • Uma vez que o valor de Expressão tenha sido avaliado e seja igual a um dos valores contidos nas diversas cláusulas Case ValorDaExpressão, as instruções daquela cláusula serão executadas;
  • Após as instruções da primeira cláusula Case equivalentes a Expressão de uma instrução Select Case tiverem sido executadas, todas as demais cláusulas serão ignoradas (mesmo aquelas cujo valor sejam iguais ou equivalentes à Expressão), e o controle do fluxo de código continuará após a instrução End Select;
  • Opcionalmente, você pode fornecer uma cláusula Else (recomendável) para ser executada, sempre que Expressão for diferente dos diversos valores empregados nas cláusulas Case anteriores. Esta abordagem permite que o seu programa responda a valores inesperados de Expressão, os quais são sempre possíveis de ocorrer durante a execução de um programa;
  • Você pode avaliar múltiplas expressões em uma única cláusula Case. Por exemplo, supondo que Expressão retorne um valor numérico, como a idade de um cliente, você poderia avaliar esta idade em múltiplas faixas, como em:
Select Case Idade
   Case 18, 19, 20 
  • Quando Expressão se referenciar a uma faixa de valores, empregue a instrução Is:
Select Case Idade
   Case Is > 35
  • Se Expressão retornar uma string, faça a comparação com strings entre aspas:
Select Case Idade
Case “Rio de Janeiro”,”Niteroi”
  • Você pode aninhar instruções Select Case dentro de cláusulas Case, não se esquecendo de usar a instrução End Select para terminá-la, ou ocorrerá um erro de compilação.
Exemplo: O exemplo a seguir demonstra como empregar uma instrução Select Case para retornar diferentes valores de percentual a serem pagos para o imposto de renda em 2003, dependendo do valor da variável Salário.

Function Alíquota(Optional Redução as Single)

  Select Case Salário

     Case < 1058.01
            Alíquota = 0

     Case >= 1058.01 and < 2115.01
            Alíquota = 0.15
            Redução = 158.70

     Case > 2115.01 <= 12696
            Alíquota = 0.275
            Redução = 423.08

Case Else
            Alíquota = 0.3

End Select

End Function

Até a Próxima!!

FUNÇÃO E INSTRUÇÃO DE CONTROLE DO FLUXO DE EXECUÇÃO – RAISEEVENT

RaiseEvent


    Instrução empregada para disparar um evento declarado ao nível do módulo, dentro de uma classe, formulário ou documento, utilizando esta sintaxe:

RaiseEvent NomeDoEvento [(Argumentos)]

Onde,
  • NomeDoEvento: argumento obrigatório, que se refere ao nome de um procedimento de evento declarado como a instrução Event;
  • Argumentos: argumento opcional, refere-se à lista de valores passados para os argumentos do evento declarado, separados por vírgula.
As seguintes considerações são válidas sobre a instrução RaiseEvent:
  • O evento deverá sr necessariamente declarado dentro do módulo a partir do qual ele é disparado com uma instrução RaiseEvent, ou ocorrerá um erro em tempo de execução;
  • Não é possível disparar um evento de controle ou formulário utilizando-se a instrução RaiseEvent. Apenas eventos declarados com a instrução Event poderão ser utilizados ou ocorrerá um erro em tempo de execução;
  • Se o evento declarado possuir argumentos, estes devem ser envolvidos entre parênteses. Se o evento não possuir argumentos, os parênteses não devem ser utilizados ou ocorrerá erro em tempo de execução;
  • Se um evento for declarado com o mesmo nome de um mesmo nome de um evento nativo do formulário, então o evento do formulário deixará de ser disparado. Por exemplo, se você declarar um evento chamado Click em um módulo de formulário, o evento Form_Click não será mais disparado. Porém o evento Form_Click poderá ser executado normalmente a partir de outro procedimento utilizando-se uma instrução Call <NoemDoEvento>.
Exemplo: O exemplo a seguir demonstra como empregar uma instrução RaiseEent para disparar um evento declarado no módulo atual. Neste caso, o módulo é empregado para manipular os dados de um formulário que possui uma caixa de texto (txtTexto) que, ao ser alterada, marca a variável fAlterou para True. Quando o foco sai da caixa de texto, o evento txtTexto_LostFocus dispara e verifica o valor de fAlterou. Se fAlterou for True, a instrução  RaiseEvent dispara o evento TextoAlterado no formulário atual, com uma instrução RaiseEvent, passando-lhe como argumento a variável fCancel, a qual pode ou não ser manipulada pelo evento Form_TextoAlterado, impedindo a alteração da caixa de texto.

Public Event TextoAlterado(Cancel as Integer)

Sub txtTexto_Change

       fAlterou = True

End Sub

Sub txtTexto_LostFocus

Dim fCancel as integer

   If fAlterou Then
       RaiseEvent TextoAlterado(fCancel)

           If fCancel Then
               TxtTexto = “” ‘Usuário cancelou a alteração
           End If

   End If

End Sub

Até a Próxima!!

FUNÇÃO E INSTRUÇÃO DE CONTROLE DO FLUXO DE EXECUÇÃO – ON...GOSUB, ON...GOTO

On...GoSub, On...GoTo


    Instruções empregadas para criar um desvio de código para uma ou maus linhas, dependendo do valor lógico da expressão testada, utilizando a seguinte sintaxes:

On expressão GoSub RótulosDeDestino
On expressão GoTo RótulosDeDestino

Onde,
  • Expressão: argumento obrigatório, indicando qualquer expressão numérica cujo valor seja avaliado para um número inteiro entre 0 e 255. Números reais serão arredondados para o mais próximo inteiro disponível. O valor de expressão será utilizado para determinar quais os rótulos ou números de linha existentes na lista será utilizado como desvio para o fluxo de código;
  • RótulosDeDestino: argumento obrigatório, indicando uma lista de números de linha ou rótulos de destino, separados por vírgulas.
As seguintes considerações são válidas para as instruções On...GoSub e On...GoTo:
  • Esta instrução existe apenas para compatibilidade para trás com versões anteriores do Basic. Seu emprego torna o código extremamente difícil de seguir e depurar, sendo mais aconselhado empregar uma instrução Select Case que faça chamadas a outros procedimentos existentes no projeto;
  • Se Expressão for igual zero ou for um número maior do que o número de itens na lista, o controle será transferido para a primeira instrução após a instrução On...GoSub ou On...GoTo;
  • Se Expressão for um número negativo ou maior do que 255, ocorrerá um erro em tempo de execução;
  • É possível misturar números de linha e rótulos na mesma lista, até um máximo de 255 possíveis pontos de desvio de código;
  • Use uma instrução Return para fazer com que o código retorne à linha que sucede a instrução On...GoTo ou On...GoSub correspondente, sem que outras linhas de código sejam executadas.
Exemplo: O exemplo a seguir demonstra como empregar as instruções On...GoSub e On...GoTo para alterar o fluxo de código do procedimento, retornando o dia da semana correspondente ao número recebido como argumento (você poderia empregar a função Wday() associada a função Format() para obter o mesmo resultado, de forma muito mais elegante):

Public Function DiaDaSemana(intDia as integer) as string

   On intDia GoTo Domingo, Segunda, Terça, Quarta, Quinta, Sexta, Sábado
   Exit Function

Domingo:
   DiaDaSemana = “Domingo”: Return
Segunda:
   DiaDaSemana = “Segunda-feira”: Return
Terça:
   DiaDaSemana = “Terça-feira”: Return
Quarta:
   DiaDaSemana = “Quarta-feira”: Return
Quinta:
   DiaDaSemana = “Quinta-feira”: Return
Sexta:
   DiaDaSemana = “Sexta-feira”: Return
Sábado:
   DiaDaSemana = “Sábado”: Return

Exit Function

Até a Próxima!!

FUNÇÃO E INSTRUÇÃO DE CONTROLE DO FLUXO DE EXECUÇÃO – IIF

IIF


    Função conhecida como Se Imediato, é empregada para efetuar um teste lógico em uma expressão, e dependendo do resultado do teste, retornar um ou outro valor obrigatório na sintaxe da função. A função IIF possui a seguinte sintaxe:

IIF(Expressão, CasoVerdadeiro, CasoFalso)

Onde,
  • Expressão: argumento obrigatório, constituindo-se de uma expressão matemática ou lógica inválida que se deseja avaliar;
  • CasoVerdadeiro: argumento obrigatório, constituindo-se de uma expressão cujo valor será retornado se Expressão for verdadeira (True);
  • CasoFalso: argumento obrigatório, constituindo-se de uma expressão cujo valor será retornado se Expressão for falsa (False).
As seguintes considerações são válidas para a função IIF:
  • A função IIF() sempre avalia Expressão, CasoVerdadeiro e CasoFalso, independente de os mesmos serem expressões simples ou chamadas a outros procedimentos do projeto. Portanto, cuidado ao empregar funções e expressões nos argumentos CasoVerdadeiro e CasoFalso da função IIF(), pois podem ocorrer erros imprevisíveis no código (como por exemplo, a divisão por zero);
  • Você pode aninhar funções IIF() nos argumentos CasoVerdadeiro e CasoFalso. Porém isto pode tornar seu código mais difícil de ser lido e mantido;
  • Quando aninhar funções IIF(), você deverá verificar todos os parênteses de cada ninho, ou ocorrerá um erro de sintaxe.
Exemplo: O exemplo a seguir emprega um ninho de funções IIF() para atribuir diferentes alíquotas de imposto de renda, válidas para o ano de 2003 no Brasil, dependendo do valor do salário passado como argumento para o procedimento. Observe que os valores dos argumentos são separados por vírgulas e as casas decimais por pontos:

Public Function Alíquota(Salário as Currency) as single

   Alíquota = IIF(Salário < 1058.01,0,IIF((Salário < 1058.01 and Salário < 2115.01,0.15,0.27.5))

End Function

Até a Próxima!!

FUNÇÃO E INSTRUÇÃO DE CONTROLE DO FLUXO DE EXECUÇÃO – IF...THEN...ELSE

If...Then...Else


    Instrução que executa condicionalmente um grupo de instruções, dependendo do valor da expressão testada, utilizando uma destas sintaxes:

If condição Then [Instruções] [Else Instruções]

Ou

If condição Then
[Intruções]
[ElseIf OutraCondição Then
[Instruções]...
[Else
[Instruções]]
End If

Onde,
  • Condição e OutraCondição: argumento obrigatório que indica uma expressão cujo valor retornado será avaliado para verdadeiro ou falso, ou uma expressão utilizando a instrução TypeOf <objeto> Is <TipoDeObjeto>, no qual verifica-se se o objeto desejado é ou não de um determinado tipo (Ex.: If TypeOf ctl Is TextBox);
  • Intruções: argumento opcional, especifica o bloco de instruções a serem executadas em cada situação;
  • Then: argumento obrigatório, especifica uma ou mais instruções a serem executadas quando Condição for verdadeira;
  • Else: argumento opcional, especifica uma ou mais instruções a serem executadas quando Condição for false;
  • ElseIf: argumento opcional, especifica um novo testa a ser executado, quando Condição for false.
As seguintes considerações são válidas para a instrução If...Then...Else:
  • Você pode empregar a sintaxe de uma única linha de código ou particioná-la em várias linhas. Tenha em mente que na sintaxe de uma única linha, ambas as expressões empregadas nas cláusulas Then e Else serão avaliadas, podendo provocar erros imprevisíveis, além de se tornar mais difícil de interpretar;
  • Você pode ter quantas cláusulas ElseIf quiser em uma instrução If Then Else, porém apenas uma cláusula Else é permitida;
  • Toda instrução If...Then...Else deve terminar obrigatoriamente com uma instrução End If;
  • Empregue uma instrução Select Case no lugar de uma instrução If...Then...ElseIf que possua várias cláusulas ElseIf, pois ela avalia a condição a ser testada apenas uma vez, tomando seu código mais eficiente;
  • A instrução TypeOf  não pode ser empregada com variáveis que representam tipos de dados, tornando seu código mais eficiente.
Exemplo: O exemplo a seguir demonstra como empregar uma instrução If...Then...Else para atribuir diferentes alíquotas de imposto de renda, válidas para o ano de 2003 no Brasil, dependendo do valor do salário passado como argumento para o procedimento:

Public Function Alíquota(Salário Currency, Optional Redução as Currency) as single

   If Salário < 1058.01 Then
       Alíquota = 0

   ElseIf Salário >= 1058.01 and Salário < 2115.01 Then
       Alíquota = 0.15
       Redução = 158.70

   ElseIf Salário > 2115.01 and Salário < 12696 Then
       Alíquota = 0.275
       Redução = 423.08

   Else
       Alíquota = 0.3

   End If

End Function

    A próxima instrução emprega uma instrução TypeOf para definir a propriedade Transparent para True de um botão de comando:

If TypeOf ctl is CommandButton Then

    Ctl.Transparent = True

End If

    Finalmente, a próxima instrução empregada uma única linha de código para retornar a raiz quadrada de um número qualquer apenas se o número for positivo:

Public Function RaizQuadrada() as Doublé

          If Número > 0 Then RaizQuadrada = Número ^ 0.5 Else RaizQuadrada = 0
          
End Function

Até a Próxima!!