VBA - Guia Rápido

VBA significa Visual Basic para Applications uma linguagem de programação orientada a eventos da Microsoft que agora é usada predominantemente com aplicativos de escritório da Microsoft, como MSExcel, MS-Word e MS-Access.

Ele ajuda os técnicos a construir aplicativos e soluções customizados para aprimorar os recursos desses aplicativos. A vantagem desta facilidade é que você NÃO PRECISA ter o Visual Basic instalado em nosso PC, no entanto, a instalação do Office ajudará implicitamente a atingir o objetivo.

Você pode usar o VBA em todas as versões do Office, desde o MS-Office 97 ao MS-Office 2013 e também com qualquer uma das versões mais recentes disponíveis. Entre o VBA, o Excel VBA é o mais popular. A vantagem de usar o VBA é que você pode criar ferramentas muito poderosas no MS Excel usando a programação linear.

Aplicação de VBA

Você deve estar se perguntando por que usar o VBA no Excel, já que o próprio MS-Excel oferece muitas funções embutidas. O MS-Excel fornece apenas funções integradas básicas que podem não ser suficientes para realizar cálculos complexos. Sob tais circunstâncias, o VBA se torna a solução mais óbvia.

Por exemplo, é muito difícil calcular a amortização mensal de um empréstimo usando as fórmulas internas do Excel. Em vez disso, é fácil programar um VBA para esse cálculo.

Acessando o Editor VBA

Na janela do Excel, pressione "ALT + F11". Uma janela VBA é aberta, conforme mostrado na captura de tela a seguir.

Neste capítulo, você aprenderá como escrever uma macro simples passo a passo.

Step 1- Primeiro, ative o menu 'Desenvolvedor' no Excel 20XX. Para fazer o mesmo, clique em Arquivo → Opções.

Step 2- Clique na guia 'Personalizar a Faixa de Opções' e marque 'Desenvolvedor'. Clique OK'.

Step 3 - A faixa de opções 'Desenvolvedor' aparece na barra de menus.

Step 4 - Clique no botão 'Visual Basic' para abrir o Editor VBA.

Step 5- Comece o script adicionando um botão. Clique em Inserir → Selecione o botão.

Step 6 - Clique com o botão direito e escolha 'propriedades'.

Step 7 - Edite o nome e a legenda conforme mostrado na imagem a seguir.

Step 8 - Agora clique duas vezes no botão e o esboço do subprocedimento será exibido conforme mostrado na imagem a seguir.

Step 9 - Comece a codificar simplesmente adicionando uma mensagem.

Private Sub say_helloworld_Click()
   MsgBox "Hi"
End Sub

Step 10- Clique no botão para executar o subprocedimento. O resultado do subprocedimento é mostrado na imagem a seguir. Certifique-se de que o modo de design esteja ativado. Basta clicar para ligá-lo, se não estiver.

Note - Nos próximos capítulos, demonstraremos o uso de um botão simples, conforme explicado da etapa 1 a 10. Portanto, é importante compreender este capítulo completamente.

Neste capítulo, você se familiarizará com as terminologias VBA do Excel comumente usadas. Essas terminologias serão utilizadas em módulos posteriores, portanto, é importante entender cada um deles.

Módulos

Módulos é a área onde o código é escrito. Esta é uma nova pasta de trabalho, portanto, não há módulos.

Para inserir um Módulo, navegue até Inserir → Módulo. Assim que um módulo é inserido, 'módulo1' é criado.

Dentro dos módulos, podemos escrever código VBA e o código é escrito dentro de um Procedimento. Um Procedimento / Subprocedimento é uma série de instruções VBA que instruem o que fazer.

Procedimento

Os procedimentos são um grupo de instruções executadas como um todo, que instruem o Excel como executar uma tarefa específica. A tarefa executada pode ser muito simples ou muito complicada. No entanto, é uma boa prática dividir procedimentos complicados em procedimentos menores.

Os dois tipos principais de Procedimentos são Sub e Function.

Função

Uma função é um grupo de código reutilizável, que pode ser chamado em qualquer lugar em seu programa. Isso elimina a necessidade de escrever o mesmo código repetidamente. Isso ajuda os programadores a dividir um grande programa em várias funções pequenas e gerenciáveis.

Além das funções integradas, o VBA também permite escrever funções definidas pelo usuário e as instruções são escritas entre Function e End Function.

Subprocedimentos

Os subprocedimentos funcionam de forma semelhante às funções. Enquanto os subprocedimentos NÃO retornam um valor, as funções podem ou não retornar um valor. Subprocedimentos PODEM ser chamados sem a palavra-chave call. Subprocedimentos são sempre incluídos dentroSub e End Sub afirmações.

Os comentários são usados ​​para documentar a lógica do programa e as informações do usuário com as quais outros programadores podem trabalhar perfeitamente no mesmo código no futuro.

Inclui informações como desenvolvidas por, modificadas por e também podem incluir lógica incorporada. Os comentários são ignorados pelo intérprete durante a execução.

Os comentários no VBA são denotados por dois métodos.

  • Qualquer instrução que comece com aspas simples (') é tratada como comentário. A seguir está um exemplo.

' This Script is invoked after successful login 
' Written by : TutorialsPoint 
' Return Value : True / False
  • Qualquer declaração que comece com a palavra-chave "REM". A seguir está um exemplo.

REM This Script is written to Validate the Entered Input 
REM Modified by  : Tutorials point/user2

o MsgBox function exibe uma caixa de mensagem e espera que o usuário clique em um botão e, em seguida, uma ação é executada com base no botão clicado pelo usuário.

Sintaxe

MsgBox(prompt[,buttons][,title][,helpfile,context])

Descrição do Parâmetro

  • Prompt- Um parâmetro obrigatório. Um String que é exibido como uma mensagem na caixa de diálogo. O comprimento máximo do prompt é de aproximadamente 1.024 caracteres. Se a mensagem se estender por mais de uma linha, as linhas podem ser separadas usando um caractere de retorno de carro (Chr (13)) ou um caractere de alimentação de linha (Chr (10)) entre cada linha.

  • Buttons- Um parâmetro opcional. Uma expressão numérica que especifica o tipo de botão a ser exibido, o estilo do ícone a ser usado, a identidade do botão padrão e a modalidade da caixa de mensagem. Se deixado em branco, o valor padrão para os botões é 0.

  • Title- Um parâmetro opcional. Uma expressão String exibida na barra de título da caixa de diálogo. Se o título for deixado em branco, o nome do aplicativo será colocado na barra de título.

  • Helpfile- Um parâmetro opcional. Uma expressão String que identifica o arquivo de Ajuda a ser usado para fornecer ajuda contextual para a caixa de diálogo.

  • Context- Um parâmetro opcional. Uma expressão numérica que identifica o número do contexto da Ajuda atribuído pelo autor da Ajuda ao tópico da Ajuda apropriado. Se o contexto for fornecido, o arquivo de ajuda também deve ser fornecido.

o Buttons parâmetro pode assumir qualquer um dos seguintes valores -

  • 0 vbOKOnly - Exibe apenas o botão OK.

  • 1 vbOKCancel - Exibe os botões OK e Cancelar.

  • 2 vbAbortRetryIgnore - Exibe os botões Abortar, Repetir e Ignorar.

  • 3 vbYesNoCancel - Exibe os botões Sim, Não e Cancelar.

  • 4 vbYesNo - Exibe os botões Sim e Não.

  • 5 vbRetryCancel - Exibe os botões Repetir e Cancelar.

  • 16 vbCritical - Exibe o ícone de mensagem crítica.

  • 32 vbQuestion - Exibe o ícone de Consulta de Aviso.

  • 48 vbExclamation - Exibe o ícone de mensagem de aviso.

  • 64 vbInformation - Exibe o ícone de mensagem de informação.

  • 0 vbDefaultButton1 - O primeiro botão é o padrão.

  • 256 vbDefaultButton2 - O segundo botão é o padrão.

  • 512 vbDefaultButton3 - O terceiro botão é o padrão.

  • 768 vbDefaultButton4 - Quarto botão é o padrão.

  • 0 vbApplicationModal Modal de aplicativo - O aplicativo atual não funcionará até que o usuário responda à caixa de mensagem.

  • 4096 vbSystemModal Sistema modal - Todos os aplicativos não funcionarão até que o usuário responda à caixa de mensagem.

Os valores acima são divididos logicamente em quatro grupos: O first group(0 a 5) indica os botões a serem exibidos na caixa de mensagem. osecond group (16, 32, 48, 64) descreve o estilo do ícone a ser exibido, o third group (0, 256, 512, 768) indica qual botão deve ser o padrão e o fourth group (0, 4096) determina a modalidade da caixa de mensagem.

Valores Retornados

A função MsgBox pode retornar um dos seguintes valores que podem ser usados ​​para identificar o botão que o usuário clicou na caixa de mensagem.

  • 1 - vbOK - OK foi clicado
  • 2 - vbCancel - Cancelar foi clicado
  • 3 - vbAbort - Abort foi clicado
  • 4 - vbRetry - Foi clicado novamente
  • 5 - vbIgnore - Ignorar foi clicado
  • 6 - vb Sim - Sim foi clicado
  • 7 - vbNo - Não foi clicado

Exemplo

Function MessageBox_Demo() 
   'Message Box with just prompt message 
   MsgBox("Welcome")     
   
   'Message Box with title, yes no and cancel Butttons  
   int a = MsgBox("Do you like blue color?",3,"Choose options") 
   ' Assume that you press No Button  
   msgbox ("The Value of a is " & a) 
End Function

Resultado

Step 1 - A função acima pode ser executada clicando no botão "Executar" na janela VBA ou chamando a função a partir da planilha do Excel, conforme mostrado na imagem a seguir.

Step 2 - Uma caixa de mensagem simples é exibida com uma mensagem "Bem-vindo" e um botão "OK"

Step 3 - Após clicar em OK, outra caixa de diálogo é exibida com uma mensagem junto com os botões "sim, não e cancelar".

Step 4- Depois de clicar no botão 'Não', o valor desse botão (7) é armazenado como um inteiro e exibido como uma caixa de mensagem para o usuário, conforme mostrado na imagem a seguir. Usando este valor, pode-se entender em qual botão o usuário clicou.

o InputBox functionsolicita que os usuários insiram valores. Após inserir os valores, se o usuário clicar no botão OK ou pressionar ENTER no teclado, a função InputBox retornará o texto na caixa de texto. Se o usuário clicar no botão Cancelar, a função retornará uma string vazia ("").

Sintaxe

InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])

Descrição do Parâmetro

  • Prompt- Um parâmetro obrigatório. Um String que é exibido como uma mensagem na caixa de diálogo. O comprimento máximo do prompt é de aproximadamente 1.024 caracteres. Se a mensagem se estender por mais de uma linha, as linhas podem ser separadas usando um caractere de retorno de carro (Chr (13)) ou um caractere de alimentação de linha (Chr (10)) entre cada linha.

  • Title- Um parâmetro opcional. Uma expressão String exibida na barra de título da caixa de diálogo. Se o título for deixado em branco, o nome do aplicativo será colocado na barra de título.

  • Default- Um parâmetro opcional. Um texto padrão na caixa de texto que o usuário gostaria que fosse exibido.

  • XPos- Um parâmetro opcional. A posição doXeixo representa a distância do prompt do lado esquerdo da tela horizontalmente. Se deixado em branco, a caixa de entrada é centralizada horizontalmente.

  • YPos- Um parâmetro opcional. A posição doYeixo representa a distância do prompt do lado esquerdo da tela verticalmente. Se for deixado em branco, a caixa de entrada será centralizada verticalmente.

  • Helpfile- Um parâmetro opcional. Uma expressão String que identifica o arquivo de ajuda a ser usado para fornecer Ajuda contextual para a caixa de diálogo.

  • context- Um parâmetro opcional. Uma expressão numérica que identifica o número do contexto da Ajuda atribuído pelo autor da Ajuda ao tópico da Ajuda apropriado. Se o contexto for fornecido, o arquivo de ajuda também deve ser fornecido.

Exemplo

Vamos calcular a área de um retângulo obtendo valores do usuário em tempo de execução com a ajuda de duas caixas de entrada (uma para comprimento e outra para largura).

Function findArea() 
   Dim Length As Double 
   Dim Width As Double 
   
   Length = InputBox("Enter Length ", "Enter a Number") 
   Width = InputBox("Enter Width", "Enter a Number") 
   findArea = Length * Width 
End Function

Resultado

Step 1 - Para executar o mesmo, chame usando o nome da função e pressione Enter como mostrado na imagem a seguir.

Step 2- Após a execução, a primeira caixa de entrada (comprimento) é exibida. Insira um valor na caixa de entrada.

Step 3 - Depois de inserir o primeiro valor, a segunda caixa de entrada (largura) é exibida.

Step 4- Ao inserir o segundo número, clique no botão OK. A área é exibida conforme mostrado na imagem a seguir.

Variableé um local de memória nomeado usado para conter um valor que pode ser alterado durante a execução do script. A seguir estão as regras básicas para nomear uma variável.

  • Você deve usar uma letra como o primeiro caractere.

  • Você não pode usar um espaço, ponto (.), Ponto de exclamação (!) Ou os caracteres @, &, $, # no nome.

  • O nome não pode ter mais de 255 caracteres.

  • Você não pode usar palavras-chave reservadas do Visual Basic como nome de variável.

Syntax

No VBA, você precisa declarar as variáveis ​​antes de usá-las.

Dim <<variable_name>> As <<variable_type>>

Tipos de dados

Existem muitos tipos de dados VBA, que podem ser divididos em duas categorias principais, a saber, tipos de dados numéricos e não numéricos.

Tipos de dados numéricos

A tabela a seguir exibe os tipos de dados numéricos e o intervalo de valores permitido.

Tipo Faixa de valores
Byte 0 a 255
Inteiro -32.768 a 32.767
Grandes -2.147.483.648 a 2.147.483.648
solteiro

-3,402823E + 38 a -1,401298E-45 para valores negativos

1.401298E-45 a 3.402823E + 38 para valores positivos.

em dobro

-1,79769313486232e + 308 a -4,94065645841247E-324 para valores negativos

4.94065645841247E-324 a 1.79769313486232e + 308 para valores positivos.

Moeda -922.337.203.685.477.5808 a 922.337.203.685.477.5807
Decimal

+/- 79.228.162.514.264.337.593.543.950.335 se nenhum decimal for usado

+/- 7,9228162514264337593543950335 (28 casas decimais).

Tipos de dados não numéricos

A tabela a seguir exibe os tipos de dados não numéricos e o intervalo de valores permitido.

Tipo Faixa de valores
String (comprimento fixo) 1 a 65.400 caracteres
String (comprimento variável) 0 a 2 bilhões de caracteres
Encontro 1º de janeiro de 100 a 31 de dezembro de 9999
boleano Verdadeiro ou falso
Objeto Qualquer objeto embutido
Variante (numérico) Qualquer valor tão grande quanto o dobro
Variante (texto) Igual à string de comprimento variável

Example

Vamos criar um botão e nomeá-lo como 'Variables_demo' para demonstrar o uso de variáveis.

Private Sub say_helloworld_Click()
   Dim password As String
   password = "Admin#1"

   Dim num As Integer
   num = 1234

   Dim BirthDay As Date
   BirthDay = DateValue("30 / 10 / 2020")

   MsgBox "Passowrd is " & password & Chr(10) & "Value of num is " &
      num & Chr(10) & "Value of Birthday is " & BirthDay
End Sub

Output

Ao executar o script, a saída será conforme mostrado na imagem a seguir.

Constante é um local de memória nomeado usado para conter um valor que NÃO PODE ser alterado durante a execução do script. Se um usuário tentar alterar um valor constante, a execução do script terminará com um erro. As constantes são declaradas da mesma maneira que as variáveis ​​são declaradas.

A seguir estão as regras para nomear uma constante.

  • Você deve usar uma letra como o primeiro caractere.

  • Você não pode usar um espaço, ponto (.), Ponto de exclamação (!) Ou os caracteres @, &, $, # no nome.

  • O nome não pode ter mais de 255 caracteres.

  • Você não pode usar palavras-chave reservadas do Visual Basic como nome de variável.

Sintaxe

No VBA, precisamos atribuir um valor às Constantes declaradas. Um erro é lançado, se tentarmos alterar o valor da constante.

Const <<constant_name>> As <<constant_type>> = <<constant_value>>

Exemplo

Vamos criar um botão "Constant_demo" para demonstrar como trabalhar com constantes.

Private Sub Constant_demo_Click() 
   Const MyInteger As Integer = 42 
   Const myDate As Date = #2/2/2020# 
   Const myDay As String = "Sunday" 
   
   MsgBox "Integer is " & MyInteger & Chr(10) & "myDate is " 
      & myDate & Chr(10) & "myDay is " & myDay  
End Sub

Resultado

Ao executar o script, a saída será exibida conforme mostrado na captura de tela a seguir.

A Operator pode ser definido usando uma expressão simples - 4 + 5 é igual a 9. Aqui, 4 e 5 são chamados operands e + é chamado operator. O VBA suporta os seguintes tipos de operadores -

  • Operadores aritméticos
  • Operadores de comparação
  • Operadores lógicos (ou relacionais)
  • Operadores de concatenação

Os operadores aritmáticos

Os seguintes operadores aritméticos são suportados pelo VBA.

Suponha que a variável A tenha 5 e a variável B tenha 10, então -

Mostrar exemplos

Operador Descrição Exemplo
+ Adiciona os dois operandos A + B dará 15
- Subtrai o segundo operando do primeiro A - B dará -5
* Multiplica ambos os operandos A * B dará 50
/ Divide o numerador pelo denominador B / A dará 2
% Operador de módulo e o restante após uma divisão inteira B% A dará 0
^ Operador de exponenciação B ^ A dará 100.000

Os operadores de comparação

Existem os seguintes operadores de comparação suportados pelo VBA.

Suponha que a variável A tenha 10 e a variável B tenha 20, então -

Mostrar exemplos

Operador Descrição Exemplo
= Verifica se os valores dos dois operandos são iguais ou não. Se sim, então a condição é verdadeira. (A = B) é falso.
<> Verifica se os valores dos dois operandos são iguais ou não. Se os valores não forem iguais, a condição é verdadeira. (A <> B) é verdadeiro.
> Verifica se o valor do operando esquerdo é maior que o valor do operando direito. Se sim, então a condição é verdadeira. (A> B) é False.
< Verifica se o valor do operando esquerdo é menor que o valor do operando direito. Se sim, então a condição é verdadeira. (A <B) é verdadeiro.
> = Verifica se o valor do operando esquerdo é maior ou igual ao valor do operando direito. Se sim, então a condição é verdadeira. (A> = B) é falso.
<= Verifica se o valor do operando esquerdo é menor ou igual ao valor do operando direito. Se sim, então a condição é verdadeira. (A <= B) é verdadeiro.

Os operadores lógicos

Os seguintes operadores lógicos são suportados pelo VBA.

Suponha que a variável A tenha 10 e a variável B tenha 0, então -

Mostrar exemplos

Operador Descrição Exemplo
E Operador lógico chamado AND. Se ambas as condições forem Verdadeiras, a Expressão será verdadeira. a <> 0 AND b <> 0 é falso.
OU Operador lógico ou chamado. Se qualquer uma das duas condições for verdadeira, a condição é verdadeira. a <> 0 OU b <> 0 é verdadeiro.
NÃO Operador lógico chamado NOT. Usado para reverter o estado lógico de seu operando. Se uma condição for verdadeira, o operador lógico NOT tornará falsa. NÃO (a <> 0 OU b <> 0) é falso.
XOR Exclusão lógica chamada. É a combinação de NOT e OR Operator. Se uma, e apenas uma, das expressões for avaliada como True, o resultado será True. (a <> 0 XOR b <> 0) é verdadeiro.

Os operadores de concatenação

Os seguintes operadores de concatenação são suportados pelo VBA.

Suponha que a variável A tenha 5 e a variável B tenha 10, então -

Mostrar exemplos

Operador Descrição Exemplo
+ Adiciona dois valores como variável. Os valores são numéricos A + B dará 15
E Concatena dois valores A & B dará 510

Suponha que a variável A = "Microsoft" e a variável B = "VBScript", então -

Operador Descrição Exemplo
+ Concatena dois valores A + B dará MicrosoftVBScript
E Concatena dois valores A & B fornecerá MicrosoftVBScript

Note- Operadores de concatenação podem ser usados ​​para números e strings. A saída depende do contexto, se as variáveis ​​contêm valor numérico ou valor de string.

A tomada de decisão permite que os programadores controlem o fluxo de execução de um script ou de uma de suas seções. A execução é governada por uma ou mais declarações condicionais.

A seguir está a forma geral de uma estrutura típica de tomada de decisão encontrada na maioria das linguagens de programação.

O VBA fornece os seguintes tipos de declarações de tomada de decisão. Clique nos links a seguir para verificar seus detalhes.

Sr. Não. Declaração e descrição
1 declaração if

A if declaração consiste em uma expressão booleana seguida por uma ou mais declarações.

2 if..else statement

A if elsedeclaração consiste em uma expressão booleana seguida por uma ou mais declarações. Se a condição for verdadeira, as declarações sobIfdeclarações são executadas. Se a condição for falsa, oElse parte do script é executada.

3 if ... elseif..else declaração

A if declaração seguida por um ou mais ElseIf declarações, que consistem em expressões booleanas seguidas por um opcional else statement, que é executado quando todas as condições se tornam falsas.

4 declarações if aninhadas

A if ou elseif declaração dentro de outra if ou elseif afirmações).

5 declaração switch

UMA switch instrução permite que uma variável seja testada quanto à igualdade em relação a uma lista de valores.

Pode haver uma situação em que você precise executar um bloco de código várias vezes. Em geral, as instruções são executadas sequencialmente: a primeira instrução em uma função é executada primeiro, seguida pela segunda e assim por diante.

As linguagens de programação fornecem várias estruturas de controle que permitem caminhos de execução mais complicados.

Uma instrução de loop nos permite executar uma instrução ou grupo de instruções várias vezes. A seguir está a forma geral de uma instrução de loop em VBA.

O VBA fornece os seguintes tipos de loops para lidar com os requisitos de loop. Clique nos links a seguir para verificar seus detalhes.

Sr. Não. Tipo de Loop e Descrição
1 para loop

Executa uma sequência de instruções várias vezes e abrevia o código que gerencia a variável de loop.

2 para ..cada loop

Isso é executado se houver pelo menos um elemento no grupo e reiterado para cada elemento em um grupo.

3 while..wend loop

Isso testa a condição antes de executar o corpo do loop.

4 fazer .. while loops

As instruções do..While serão executadas enquanto a condição for True. (Ou seja,) O Loop deve ser repetido até que a condição seja False.

5 do..até loops

As instruções do..Until serão executadas enquanto a condição for False. (Ou seja,) O Loop deve ser repetido até que a condição seja True.

Declarações de controle de loop

As instruções de controle de loop alteram a execução de sua sequência normal. Quando a execução deixa um escopo, todas as instruções restantes no loop NÃO são executadas.

O VBA oferece suporte às seguintes instruções de controle. Clique nos links a seguir para verificar seus detalhes.

S.No. Declaração de controle e descrição
1 Declaração de saída para

Termina o For loop instrução e transfere a execução para a instrução imediatamente após o loop

2 Declaração de saída Do

Termina o Do While instrução e transfere a execução para a instrução imediatamente após o loop

Strings são uma sequência de caracteres, que podem consistir em alfabetos, números, caracteres especiais ou todos eles. Uma variável é considerada uma string se estiver entre aspas duplas "".

Sintaxe

variablename = "string"

Exemplos

str1 = "string"   ' Only Alphabets
str2 = "132.45"   ' Only Numbers
str3 = "!@#$;*"  ' Only Special Characters
Str4 = "Asc23@#"  ' Has all the above

Funções de String

Existem funções VBA String predefinidas, que ajudam os desenvolvedores a trabalhar com as strings de forma muito eficaz. A seguir estão os métodos de String com suporte no VBA. Clique em cada um dos métodos para saber mais detalhadamente.

Sr. Não. Nome e descrição da função
1 InStr

Retorna a primeira ocorrência da substring especificada. A pesquisa acontece da esquerda para a direita.

2 InstrRev

Retorna a primeira ocorrência da substring especificada. A pesquisa acontece da direita para a esquerda.

3 Lcase

Retorna o minúsculo da string especificada.

4 Ucase

Retorna as letras maiúsculas da string especificada.

5 Esquerda

Retorna um número específico de caracteres do lado esquerdo da string.

6 Direito

Retorna um número específico de caracteres do lado direito da string.

7 Mid

Retorna um número específico de caracteres de uma string com base nos parâmetros especificados.

8 Ltrim

Retorna uma string após remover os espaços do lado esquerdo da string especificada.

9 Rtrim

Retorna uma string após remover os espaços do lado direito da string especificada.

10 aparar

Retorna um valor de string após remover os espaços em branco à esquerda e à direita.

11 Len

Retorna o comprimento da string fornecida.

12 Substituir

Retorna uma string após substituir uma string por outra string.

13 Espaço

Preenche uma string com o número especificado de espaços.

14 StrComp

Retorna um valor inteiro após comparar as duas strings especificadas.

15 Corda

Retorna uma string com um caractere especificado por um número especificado de vezes.

16 StrReverse

Retorna uma string após reverter a sequência dos caracteres da string fornecida.

As funções de data e hora do VBScript ajudam os desenvolvedores a converter a data e a hora de um formato para outro ou a expressar o valor de data ou hora no formato adequado a uma condição específica.

Funções de data

Sr. Não. Descrição da função
1 Encontro

Uma função, que retorna a data atual do sistema.

2 CDate

Uma função, que converte uma determinada entrada em data.

3 DateAdd

Uma função, que retorna uma data à qual um intervalo de tempo especificado foi adicionado.

4 DateDiff

Uma função, que retorna a diferença entre dois períodos de tempo.

5 DatePart

Uma função, que retorna uma parte especificada do valor de data de entrada fornecido.

6 DateSerial

Uma função, que retorna uma data válida para o ano, mês e data fornecidos.

7 FormatDateTime

Uma função, que formata a data com base nos parâmetros fornecidos.

8 IsDate

Uma função, que retorna um valor booleano, seja ou não o parâmetro fornecido uma data.

9 Dia

Uma função, que retorna um número inteiro entre 1 e 31 que representa o dia da data especificada.

10 Mês

Uma função, que retorna um número inteiro entre 1 e 12 que representa o mês da data especificada.

11 Ano

Uma função, que retorna um inteiro que representa o ano da data especificada.

12 MonthName

Uma função, que retorna o nome do mês específico para a data especificada.

13 WeekDay

Uma função, que retorna um número inteiro (1 a 7) que representa o dia da semana para o dia especificado.

14 WeekDayName

Uma função, que retorna o nome do dia da semana para o dia especificado.

Funções de tempo

Sr. Não. Descrição da função
1 Agora

Uma função, que retorna a data e hora atuais do sistema.

2 Hora

Uma função, que retorna um número inteiro entre 0 e 23 que representa a parte da hora do tempo determinado.

3 Minuto

Uma função, que retorna um número inteiro entre 0 e 59 que representa a parte dos minutos do tempo determinado.

4 Segundo

Uma Função, que retorna um número inteiro entre 0 e 59 que representa a parte dos segundos do tempo determinado.

5 Tempo

Uma função, que retorna a hora atual do sistema.

6 Cronômetro

Uma função, que retorna o número de segundos e milissegundos desde as 12:00.

7 TimeSerial

Uma função, que retorna a hora para a entrada específica de hora, minuto e segundo.

8 Valor do tempo

Uma função, que converte a string de entrada em um formato de hora.

Sabemos muito bem que uma variável é um contêiner para armazenar um valor. Às vezes, os desenvolvedores podem manter mais de um valor em uma única variável por vez. Quando uma série de valores é armazenada em uma única variável, ela é conhecida comoarray variable.

Declaração de Array

Os arrays são declarados da mesma maneira que uma variável foi declarada, exceto que a declaração de uma variável de array usa parênteses. No exemplo a seguir, o tamanho da matriz é mencionado entre colchetes.

'Method 1 : Using Dim
Dim arr1()	'Without Size

'Method 2 : Mentioning the Size
Dim arr2(5)  'Declared with size of 5

'Method 3 : using 'Array' Parameter
Dim arr3
arr3 = Array("apple","Orange","Grapes")
  • Embora o tamanho da matriz seja indicado como 5, ele pode conter 6 valores conforme o índice da matriz começa em ZERO.

  • O índice de matriz não pode ser negativo.

  • Os Arrays VBScript podem armazenar qualquer tipo de variável em um array. Conseqüentemente, um array pode armazenar um inteiro, string ou caracteres em uma única variável de array.

Atribuição de valores a uma matriz

Os valores são atribuídos à matriz especificando um valor de índice da matriz em relação a cada um dos valores a serem atribuídos. Pode ser uma string.

Exemplo

Adicione um botão e adicione a seguinte função.

Private Sub Constant_demo_Click()
   Dim arr(5)
   arr(0) = "1"           'Number as String
   arr(1) = "VBScript"    'String
   arr(2) = 100 		     'Number
   arr(3) = 2.45 		     'Decimal Number
   arr(4) = #10/07/2013#  'Date
   arr(5) = #12.45 PM#    'Time
  
   msgbox("Value stored in Array index 0 : " & arr(0))
   msgbox("Value stored in Array index 1 : " & arr(1))
   msgbox("Value stored in Array index 2 : " & arr(2))
   msgbox("Value stored in Array index 3 : " & arr(3))
   msgbox("Value stored in Array index 4 : " & arr(4))
   msgbox("Value stored in Array index 5 : " & arr(5))
End Sub

Quando você executa a função acima, ela produz a seguinte saída.

Value stored in Array index 0 : 1
Value stored in Array index 1 : VBScript
Value stored in Array index 2 : 100
Value stored in Array index 3 : 2.45
Value stored in Array index 4 : 7/10/2013
Value stored in Array index 5 : 12:45:00 PM

Matrizes multidimensionais

Os arrays não se limitam apenas a uma única dimensão, mas podem ter no máximo 60 dimensões. Matrizes bidimensionais são as mais comumente usadas.

Exemplo

No exemplo a seguir, uma matriz multidimensional é declarada com 3 linhas e 4 colunas.

Private Sub Constant_demo_Click()
   Dim arr(2,3) as Variant	' Which has 3 rows and 4 columns
   arr(0,0) = "Apple" 
   arr(0,1) = "Orange"
   arr(0,2) = "Grapes"           
   arr(0,3) = "pineapple" 
   arr(1,0) = "cucumber"           
   arr(1,1) = "beans"           
   arr(1,2) = "carrot"           
   arr(1,3) = "tomato"           
   arr(2,0) = "potato"             
   arr(2,1) = "sandwitch"            
   arr(2,2) = "coffee"             
   arr(2,3) = "nuts"            
           
   msgbox("Value in Array index 0,1 : " &  arr(0,1))
   msgbox("Value in Array index 2,2 : " &  arr(2,2))
End Sub

Quando você executa a função acima, ela produz a seguinte saída.

Value stored in Array index : 0 , 1 : Orange
Value stored in Array index : 2 , 2 : coffee

Declaração ReDim

A instrução ReDim é usada para declarar variáveis ​​de matriz dinâmica e alocar ou realocar espaço de armazenamento.

Sintaxe

ReDim [Preserve] varname(subscripts) [, varname(subscripts)]

Descrição do Parâmetro

  • Preserve - Um parâmetro opcional usado para preservar os dados em uma matriz existente quando você altera o tamanho da última dimensão.

  • Varname - Um parâmetro obrigatório, que denota o nome da variável, que deve seguir as convenções de nomenclatura de variável padrão.

  • Subscripts - Um parâmetro obrigatório, que indica o tamanho da matriz.

Exemplo

No exemplo a seguir, uma matriz foi redefinida e os valores preservados quando o tamanho existente da matriz é alterado.

Note - Ao redimensionar um array menor que o original, os dados dos elementos eliminados serão perdidos.

Private Sub Constant_demo_Click()
   Dim a() as variant
   i = 0
   redim a(5)
   a(0) = "XYZ"
   a(1) = 41.25
   a(2) = 22
  
   REDIM PRESERVE a(7)
   For i = 3 to 7
   a(i) = i
   Next
  
   'to Fetch the output
   For i = 0 to ubound(a)
      Msgbox a(i)
   Next
End Sub

Quando você executa a função acima, ela produz a seguinte saída.

XYZ
41.25
22
3
4
5
6
7

Métodos Array

Existem várias funções embutidas no VBScript que ajudam os desenvolvedores a lidar com matrizes de forma eficaz. Todos os métodos usados ​​em conjunto com arrays estão listados abaixo. Clique no nome do método para saber mais detalhes.

Sr. Não. Descrição da função
1 LBound

Uma Função, que retorna um inteiro que corresponde ao menor subscrito das matrizes fornecidas.

2 UBound

Uma função, que retorna um número inteiro que corresponde ao maior subscrito dos arrays fornecidos.

3 Dividido

Uma Function, que retorna uma matriz que contém um número especificado de valores. Dividir com base em um delimitador.

4 Junte-se

Uma Função, que retorna uma string que contém um número especificado de substrings em uma matriz. Esta é uma função exatamente oposta ao Método de divisão.

5 Filtro

Uma Função, que retorna uma matriz baseada em zero que contém um subconjunto de uma matriz de string com base em um critério de filtro específico.

6 IsArray

Uma Função, que retorna um valor booleano que indica se a variável de entrada é ou não uma matriz.

7 Apagar

Uma função, que recupera a memória alocada para as variáveis ​​do array.

UMA functioné um grupo de código reutilizável que pode ser chamado em qualquer lugar em seu programa. Isso elimina a necessidade de escrever o mesmo código repetidamente. Isso permite que os programadores dividam um grande programa em várias funções pequenas e gerenciáveis.

Além das funções integradas, o VBA também permite escrever funções definidas pelo usuário. Neste capítulo, você aprenderá como escrever suas próprias funções em VBA.

Definição de Função

Uma função VBA pode ter uma instrução de retorno opcional. Isso é necessário se você deseja retornar um valor de uma função.

Por exemplo, você pode passar dois números em uma função e então esperar que a função retorne sua multiplicação no programa de chamada.

Note - Uma função pode retornar vários valores separados por uma vírgula como uma matriz atribuída ao próprio nome da função.

Antes de usarmos uma função, precisamos definir essa função particular. A maneira mais comum de definir uma função no VBA é usando oFunction palavra-chave, seguida por um nome de função exclusivo e pode ou não conter uma lista de parâmetros e uma instrução com End Functionpalavra-chave, que indica o fim da função. A seguir está a sintaxe básica.

Sintaxe

Adicione um botão e adicione a seguinte função.

Function Functionname(parameter-list)
   statement 1
   statement 2
   statement 3
   .......
   statement n
End Function

Exemplo

Adicione a seguinte função que retorna a área. Observe que um valor / valores podem ser retornados com o próprio nome da função.

Function findArea(Length As Double, Optional Width As Variant)
   If IsMissing(Width) Then
      findArea = Length * Length
   Else
      findArea = Length * Width
   End If
End Function

Chamando uma função

Para invocar uma função, chame a função usando o nome da função, conforme mostrado na captura de tela a seguir.

A saída da área conforme mostrado abaixo será exibida para o usuário.

Sub Procedures são semelhantes às funções, no entanto, existem algumas diferenças.

  • Subprocedimentos NÃO retornam um valor, enquanto as funções podem ou não retornar um valor.

  • Subprocedimentos PODEM ser chamados sem uma palavra-chave de chamada.

  • Os procedimentos Sub são sempre incluídos nas instruções Sub e End Sub.

Exemplo

Sub Area(x As Double, y As Double)
   MsgBox x * y
End Sub

Procedimentos de Chamada

Para invocar um procedimento em algum lugar do script, você pode fazer uma chamada de uma função. Não poderemos usar a mesma maneira que a de uma função, pois o subprocedimento NÃO retornará um valor.

Function findArea(Length As Double, Width As Variant)
   area Length, Width    ' To Calculate Area 'area' sub proc is called
End Function

Agora você poderá chamar a função apenas, mas não o subprocedimento conforme mostrado na imagem a seguir.

A área é calculada e mostrada apenas na caixa de mensagem.

A célula de resultado exibe ZERO, pois o valor da área NÃO é retornado da função. Resumindo, você não pode fazer uma chamada direta para um subprocedimento da planilha do Excel.

VBA, uma programação orientada a eventos pode ser disparada quando você altera uma célula ou intervalo de valores de célula manualmente. O evento de alteração pode tornar as coisas mais fáceis, mas você pode encerrar rapidamente uma página cheia de formatação. Existem dois tipos de eventos.

  • Eventos de planilha
  • Eventos de pasta de trabalho

Eventos de planilha

Os eventos da planilha são acionados quando há uma alteração na planilha. Ele é criado clicando com o botão direito na guia da planilha e escolhendo 'visualizar código', e posteriormente colando o código.

O usuário pode selecionar cada uma dessas planilhas e escolher "Planilha" no menu suspenso para obter a lista de todos os eventos de planilha com suporte.

A seguir estão os eventos de planilha com suporte que podem ser adicionados pelo usuário.

Private Sub Worksheet_Activate() 
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)    
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) 
Private Sub Worksheet_Calculate() 
Private Sub Worksheet_Change(ByVal Target As Range) 
Private Sub Worksheet_Deactivate() 
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Exemplo

Digamos que só precisamos exibir uma mensagem antes do clique duplo.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
   MsgBox "Before Double Click"
End Sub

Resultado

Ao clicar duas vezes em qualquer célula, a caixa de mensagem é exibida para o usuário, conforme mostrado na imagem a seguir.

Eventos de pasta de trabalho

Os eventos da pasta de trabalho são acionados quando há uma alteração na pasta de trabalho como um todo. Podemos adicionar o código para eventos de pasta de trabalho selecionando 'Esta pasta de trabalho' e selecionando 'pasta de trabalho' no menu suspenso, conforme mostrado na captura de tela a seguir. Imediatamente, o subprocedimento Workbook_open é exibido para o usuário, conforme visto na captura de tela a seguir.

A seguir estão os eventos de pasta de trabalho com suporte que podem ser adicionados pelo usuário.

Private Sub Workbook_AddinUninstall() 
Private Sub Workbook_BeforeClose(Cancel As Boolean) 
Private Sub Workbook_BeforePrint(Cancel As Boolean) 
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
Private Sub Workbook_Deactivate() 
Private Sub Workbook_NewSheet(ByVal Sh As Object) 
Private Sub Workbook_Open() 
Private Sub Workbook_SheetActivate(ByVal Sh As Object) 
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) 
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) 
Private Sub Workbook_SheetCalculate(ByVal Sh As Object) 
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object) 
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink) 
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) 
Private Sub Workbook_WindowActivate(ByVal Wn As Window) 
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window) 
Private Sub Workbook_WindowResize(ByVal Wn As Window)

Exemplo

Digamos que precisamos apenas exibir uma mensagem para o usuário de que uma nova planilha foi criada com sucesso, sempre que uma nova planilha for criada.

Private Sub Workbook_NewSheet(ByVal Sh As Object)
   MsgBox "New Sheet Created Successfully"
End Sub

Resultado

Ao criar uma nova planilha do Excel, uma mensagem é exibida para o usuário conforme mostrado na imagem a seguir.

Existem três tipos de erros de programação: (a) Erros de sintaxe, (b) Erros de tempo de execução e (c) Erros lógicos.

Erros de sintaxe

Erros de sintaxe, também chamados de erros de análise, ocorrem no momento da interpretação do VBScript. Por exemplo, a linha a seguir causa um erro de sintaxe porque está faltando um parêntese de fechamento.

Function ErrorHanlding_Demo()
   dim x,y
   x = "Tutorialspoint"
   y = Ucase(x
End Function

Erros de tempo de execução

Erros de tempo de execução, também chamados de exceções, ocorrem durante a execução, após a interpretação.

Por exemplo, a linha a seguir causa um erro de tempo de execução porque aqui a sintaxe está correta, mas no tempo de execução ela está tentando chamar fnmultiply, que é uma função não existente.

Function ErrorHanlding_Demo1()
   Dim x,y
   x = 10
   y = 20
   z = fnadd(x,y)
   a = fnmultiply(x,y)
End Function

Function fnadd(x,y)
   fnadd = x + y
End Function

Erros Lógicos

Erros lógicos podem ser o tipo de erro mais difícil de rastrear. Esses erros não são o resultado de uma sintaxe ou erro de tempo de execução. Em vez disso, eles ocorrem quando você comete um erro na lógica que orienta seu script e não obtém o resultado esperado.

Você não pode detectar esses erros, porque depende de seus requisitos de negócios que tipo de lógica você deseja colocar em seu programa.

Por exemplo, dividir um número por zero ou um script escrito que entra em um loop infinito.

Err Object

Suponha que se houver um erro de tempo de execução, a execução será interrompida exibindo a mensagem de erro. Como desenvolvedor, se quisermos capturar o erro, entãoError O objeto é usado.

Exemplo

No exemplo a seguir, Err.Number dá o número do erro e Err.Description fornece a descrição do erro.

Err.Raise 6   ' Raise an overflow error.
MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description
Err.Clear   ' Clear the error.

Manipulação de erros

O VBA ativa uma rotina de tratamento de erros e também pode ser usado para desabilitar uma rotina de tratamento de erros. Sem uma instrução On Error, qualquer erro em tempo de execução que ocorra é fatal: uma mensagem de erro é exibida e a execução é interrompida abruptamente.

On Error { GoTo [ line | 0 | -1 ] | Resume Next }

Sr. Não. Palavra-chave e descrição
1

GoTo line

Ativa a rotina de tratamento de erros que começa na linha especificada no argumento de linha necessário. A linha especificada deve estar no mesmo procedimento que a instrução On Error, ou ocorrerá um erro em tempo de compilação.

2

GoTo 0

Desativa o manipulador de erros habilitado no procedimento atual e o redefine como Nothing.

3

GoTo -1

Desativa a exceção habilitada no procedimento atual e a redefine como Nothing.

4

Resume Next

Especifica que, quando ocorre um erro em tempo de execução, o controle vai para a instrução imediatamente após a instrução em que o erro ocorreu e a execução continua a partir desse ponto.

Exemplo

Public Sub OnErrorDemo()
   On Error GoTo ErrorHandler   ' Enable error-handling routine.
   Dim x, y, z As Integer
   x = 50
   y = 0
   z = x / y   ' Divide by ZERO Error Raises
  
   ErrorHandler:    ' Error-handling routine.
   Select Case Err.Number   ' Evaluate error number.
      Case 10   ' Divide by zero error
         MsgBox ("You attempted to divide by zero!")
      Case Else
         MsgBox "UNKNOWN ERROR  - Error# " & Err.Number & " : " & Err.Description
   End Select
   Resume Next
End Sub

Ao programar usando VBA, existem alguns objetos importantes com os quais o usuário lidaria.

  • Objetos de Aplicação
  • Objetos de pasta de trabalho
  • Objetos de planilha
  • Objetos de alcance

Objetos de Aplicação

O objeto Aplicativo consiste no seguinte -

  • Configurações e opções de todo o aplicativo.
  • Métodos que retornam objetos de nível superior, como ActiveCell, ActiveSheet e assim por diante.

Exemplo

'Example 1 :
Set xlapp = CreateObject("Excel.Sheet") 
xlapp.Application.Workbooks.Open "C:\test.xls"

'Example 2 :
Application.Windows("test.xls").Activate

'Example 3:
Application.ActiveCell.Font.Bold = True

Objetos de pasta de trabalho

O objeto Workbook é membro da coleção Workbooks e contém todos os objetos Workbook atualmente abertos no Microsoft Excel.

Exemplo

'Ex 1 : To close Workbooks
Workbooks.Close

'Ex 2 : To Add an Empty Work Book
Workbooks.Add

'Ex 3: To Open a Workbook
Workbooks.Open FileName:="Test.xls", ReadOnly:=True

'Ex : 4 - To Activate WorkBooks
Workbooks("Test.xls").Worksheets("Sheet1").Activate

Objetos de planilha

O objeto Worksheet é um membro da coleção Worksheets e contém todos os objetos Worksheet em uma pasta de trabalho.

Exemplo

'Ex 1 : To make it Invisible
Worksheets(1).Visible = False

'Ex 2 : To protect an WorkSheet
Worksheets("Sheet1").Protect password:=strPassword, scenarios:=True

Objetos de alcance

Objetos de intervalo representam uma célula, uma linha, uma coluna ou uma seleção de células contendo um ou mais blocos contínuos de células.

'Ex 1 : To Put a value in the cell A5
Worksheets("Sheet1").Range("A5").Value = "5235"

'Ex 2 : To put a value in range of Cells
Worksheets("Sheet1").Range("A1:A4").Value = 5

Você também pode ler o arquivo do Excel e gravar o conteúdo da célula em um arquivo de texto usando o VBA. O VBA permite que os usuários trabalhem com arquivos de texto usando dois métodos -

  • Objeto do sistema de arquivos
  • usando comando de gravação

Objeto de sistema de arquivos (FSO)

Como o nome sugere, os FSOs ajudam os desenvolvedores a trabalhar com unidades, pastas e arquivos. Nesta seção, discutiremos como usar um FSO.

Sr. Não. Tipo e descrição do objeto
1

Drive

Drive é um objeto. Contém métodos e propriedades que permitem reunir informações sobre uma unidade conectada ao sistema.

2

Drives

Drives é uma coleção. Ele fornece uma lista das unidades conectadas ao sistema, física ou logicamente.

3

File

O arquivo é um objeto. Ele contém métodos e propriedades que permitem aos desenvolvedores criar, excluir ou mover um arquivo.

4

Files

Arquivos é uma coleção. Ele fornece uma lista de todos os arquivos contidos em uma pasta.

5

Folder

A pasta é um objeto. Ele fornece métodos e propriedades que permitem aos desenvolvedores criar, excluir ou mover pastas.

6

Folders

As pastas são uma coleção. Ele fornece uma lista de todas as pastas dentro de uma pasta.

7

TextStream

TextStream é um objeto. Ele permite que os desenvolvedores leiam e escrevam arquivos de texto.

Dirigir

Driveé um objeto que fornece acesso às propriedades de uma determinada unidade de disco ou compartilhamento de rede. As seguintes propriedades são suportadas porDrive objeto -

  • AvailableSpace
  • DriveLetter
  • DriveType
  • FileSystem
  • FreeSpace
  • IsReady
  • Path
  • RootFolder
  • SerialNumber
  • ShareName
  • TotalSize
  • VolumeName

Exemplo

Step 1- Antes de prosseguir com a criação de scripts usando FSO, devemos habilitar o Microsoft Scripting Runtime. Para fazer o mesmo, navegue até Ferramentas → Referências conforme mostrado na imagem a seguir.

Step 2 - Adicione "Microsoft Scripting RunTime" e clique em OK.

Step 3 - Adicione dados que você gostaria de escrever em um arquivo de texto e adicione um botão de comando.

Step 4 - Agora é hora de Script.

Private Sub fn_write_to_text_Click()
   Dim FilePath As String
   Dim CellData As String
   Dim LastCol As Long
   Dim LastRow As Long
  
   Dim fso As FileSystemObject
   Set fso = New FileSystemObject
   Dim stream As TextStream
  
   LastCol = ActiveSheet.UsedRange.Columns.Count
   LastRow = ActiveSheet.UsedRange.Rows.Count
    
   ' Create a TextStream.
   Set stream = fso.OpenTextFile("D:\Try\Support.log", ForWriting, True)
  
   CellData = ""
  
   For i = 1 To LastRow
      For j = 1 To LastCol
         CellData = Trim(ActiveCell(i, j).Value)
         stream.WriteLine "The Value at location (" & i & "," & j & ")" & CellData
      Next j
   Next i
  
   stream.Close
   MsgBox ("Job Done")
End Sub

Resultado

Ao executar o script, certifique-se de colocar o cursor na primeira célula da planilha. O arquivo Support.log é criado conforme mostrado na seguinte captura de tela em "D: \ Try".

O conteúdo do arquivo é mostrado na imagem a seguir.

Comando de escrita

Ao contrário do FSO, NÃO precisamos adicionar nenhuma referência, entretanto, NÃO seremos capazes de trabalhar com drives, arquivos e pastas. Poderemos apenas adicionar o fluxo ao arquivo de texto.

Exemplo

Private Sub fn_write_to_text_Click()
   Dim FilePath As String
   Dim CellData As String
   Dim LastCol As Long
   Dim LastRow As Long
  
   LastCol = ActiveSheet.UsedRange.Columns.Count
   LastRow = ActiveSheet.UsedRange.Rows.Count
    
   FilePath = "D:\Try\write.txt"
   Open FilePath For Output As #2
  
   CellData = ""
   For i = 1 To LastRow
      For j = 1 To LastCol
         CellData = "The Value at location (" & i & "," & j & ")" & Trim(ActiveCell(i, j).Value)
         Write #2, CellData
      Next j
   Next i
  
   Close #2
   MsgBox ("Job Done")
End Sub

Resultado

Ao executar o script, o arquivo "write.txt" é criado no local "D: \ Try" conforme mostrado na imagem a seguir.

O conteúdo do arquivo é mostrado na imagem a seguir.

Usando o VBA, você pode gerar gráficos com base em determinados critérios. Vamos dar uma olhada nele usando um exemplo.

Step 1 - Insira os dados contra os quais o gráfico deve ser gerado.

Step 2 - Crie 3 botões - um para gerar um gráfico de barras, outro para gerar um gráfico de pizza e outro para gerar um gráfico de colunas.

Step 3 - Desenvolva uma macro para gerar cada um desses tipos de gráficos.

' Procedure to Generate Pie Chart
Private Sub fn_generate_pie_graph_Click()
   Dim cht As ChartObject
   For Each cht In Worksheets(1).ChartObjects
      cht.Chart.Type = xlPie
   Next cht
End Sub

' Procedure to Generate Bar Graph
Private Sub fn_Generate_Bar_Graph_Click()
   Dim cht As ChartObject
   For Each cht In Worksheets(1).ChartObjects
      cht.Chart.Type = xlBar
   Next cht
End Sub

' Procedure to Generate Column Graph
Private Sub fn_generate_column_graph_Click()
   Dim cht As ChartObject
   For Each cht In Worksheets(1).ChartObjects
      cht.Chart.Type = xlColumn
   Next cht
End Sub

Step 4- Ao clicar no botão correspondente, o gráfico é criado. Na saída a seguir, clique no botão gerar gráfico de pizza.

UMA User Formé uma caixa de diálogo personalizada que torna a entrada de dados do usuário mais controlável e fácil de usar para o usuário. Neste capítulo, você aprenderá a projetar um formulário simples e adicionar dados ao Excel.

Step 1- Navegue até a janela VBA pressionando Alt + F11 e navegue até o menu "Inserir" e selecione "Formulário do usuário". Ao selecionar, o formulário do usuário é exibido conforme mostrado na imagem a seguir.

Step 2 - Projete os formulários usando os controles fornecidos.

Step 3- Após adicionar cada controle, os controles devem ser nomeados. A legenda corresponde ao que aparece no formulário e o nome corresponde ao nome lógico que aparecerá quando você escrever o código VBA para esse elemento.

Step 4 - A seguir estão os nomes de cada um dos controles adicionados.

Ao controle Nome Lógico Rubrica
De frmempform Formulário de Funcionário
Caixa de etiqueta de identificação de funcionário vazio ID do Empregado
caixa de etiqueta de nome próprio primeiro nome Primeiro nome
caixa de rótulo de sobrenome último nome Último nome
caixa de etiqueta dob dob Data de nascimento
Mailid Label Box mailid Identificação do email
Caixa de etiqueta para portador de passaporte Portador do passaporte Portador de passaporte
Caixa de Texto Emp ID txtempid Não aplicável
Caixa de Texto do Primeiro Nome txtprimeiro nome Não aplicável
Caixa de Texto do Sobrenome txtlastname Não aplicável
Caixa de Texto de ID de Email txtemailid Não aplicável
Caixa de combinação de datas cmbdate Não aplicável
Caixa de combinação do mês cmbmês Não aplicável
Year Combo Box cmbyear Não aplicável
Sim botão de rádio rádio sim sim
Sem botão de rádio radiono Não
Botão de envio btnsubmit Enviar
Botão Cancelar cancelar Cancelar

Step 5 - Adicione o código para o evento de carregamento do formulário, clicando com o botão direito do mouse no formulário e selecionando 'Exibir código'.

Step 6 - Selecione 'Formulário de usuário' na lista suspensa de objetos e selecione o método 'Inicializar' conforme mostrado na captura de tela a seguir.

Step 7 - Ao carregar o formulário, certifique-se de que as caixas de texto estejam desmarcadas, as caixas suspensas sejam preenchidas e os botões de opção sejam redefinidos.

Private Sub UserForm_Initialize()
   'Empty Emp ID Text box and Set the Cursor 
   txtempid.Value = ""
   txtempid.SetFocus
   
   'Empty all other text box fields
   txtfirstname.Value = ""
   txtlastname.Value = ""
   txtemailid.Value = ""
   
   'Clear All Date of Birth Related Fields
   cmbdate.Clear
   cmbmonth.Clear
   cmbyear.Clear
   
   'Fill Date Drop Down box - Takes 1 to 31
   With cmbdate
      .AddItem "1"
      .AddItem "2"
      .AddItem "3"
      .AddItem "4"
      .AddItem "5"
      .AddItem "6"
      .AddItem "7"
      .AddItem "8"
      .AddItem "9"
      .AddItem "10"
      .AddItem "11"
      .AddItem "12"
      .AddItem "13"
      .AddItem "14"
      .AddItem "15"
      .AddItem "16"
      .AddItem "17"
      .AddItem "18"
      .AddItem "19"
      .AddItem "20"
      .AddItem "21"
      .AddItem "22"
      .AddItem "23"
      .AddItem "24"
      .AddItem "25"
      .AddItem "26"
      .AddItem "27"
      .AddItem "28"
      .AddItem "29"
      .AddItem "30"
      .AddItem "31"
   End With
   
   'Fill Month Drop Down box - Takes Jan to Dec
   With cmbmonth
      .AddItem "JAN"
      .AddItem "FEB"
      .AddItem "MAR"
      .AddItem "APR"
      .AddItem "MAY"
      .AddItem "JUN"
      .AddItem "JUL"
      .AddItem "AUG"
      .AddItem "SEP"
      .AddItem "OCT"
      .AddItem "NOV"
      .AddItem "DEC"
   End With
   
   'Fill Year Drop Down box - Takes 1980 to 2014
   With cmbyear
      .AddItem "1980"
      .AddItem "1981"
      .AddItem "1982"
      .AddItem "1983"
      .AddItem "1984"
      .AddItem "1985"
      .AddItem "1986"
      .AddItem "1987"
      .AddItem "1988"
      .AddItem "1989"
      .AddItem "1990"
      .AddItem "1991"
      .AddItem "1992"
      .AddItem "1993"
      .AddItem "1994"
      .AddItem "1995"
      .AddItem "1996"
      .AddItem "1997"
      .AddItem "1998"
      .AddItem "1999"
      .AddItem "2000"
      .AddItem "2001"
      .AddItem "2002"
      .AddItem "2003"
      .AddItem "2004"
      .AddItem "2005"
      .AddItem "2006"
      .AddItem "2007"
      .AddItem "2008"
      .AddItem "2009"
      .AddItem "2010"
      .AddItem "2011"
      .AddItem "2012"
      .AddItem "2013"
      .AddItem "2014"
   End With
   
   'Reset Radio Button. Set it to False when form loads.
   radioyes.Value = False
   radiono.Value = False

End Sub

Step 8- Agora adicione o código ao botão Enviar. Ao clicar no botão enviar, o usuário deve ser capaz de adicionar os valores na planilha.

Private Sub btnsubmit_Click()
   Dim emptyRow As Long
  
   'Make Sheet1 active
   Sheet1.Activate
  
   'Determine emptyRow
   emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1
  
   'Transfer information
   Cells(emptyRow, 1).Value = txtempid.Value
   Cells(emptyRow, 2).Value = txtfirstname.Value
   Cells(emptyRow, 3).Value = txtlastname.Value
   Cells(emptyRow, 4).Value = cmbdate.Value & "/" & cmbmonth.Value & "/" & cmbyear.Value
   Cells(emptyRow, 5).Value = txtemailid.Value
  
   If radioyes.Value = True Then
      Cells(emptyRow, 6).Value = "Yes"
   Else
      Cells(emptyRow, 6).Value = "No"
   End If
End Sub

Step 9 - Adicione um método para fechar o formulário quando o usuário clicar no botão Cancelar.

Private Sub btncancel_Click()
   Unload Me
End Sub

Step 10- Execute o formulário clicando no botão "Executar". Insira os valores no formulário e clique no botão 'Enviar'. Os valores irão fluir automaticamente para a planilha, conforme mostrado na imagem a seguir.