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.