Buscar

Unidade 2 - Conceitos de Visual Basic e sistemas operacionais - Programação de Computadores

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 39 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Unidade 2.
Conceitos de Visual Basic e sistemas operacionais
Ariel da Silva Dias
OBJETIVOS DA UNIDADE
 Compreender e diferenciar os conceitos dos componentes de VBA, módulo e procedimento;
 Identificar os principais métodos que podem ser utilizados no desenvolvimento em VBA;
 Conhecer os conceitos de sistema operacional, especificamente gerenciamento de memória e de processo.
TÓPICOS DE ESTUDO
Introdução ao Visual Basic
// Definindo VBA
// Componentes do VBA
// Biblioteca de objetos
// Editor VBA
// O que são macros?
// Criando nossa primeira macro utilizando VBA
// Utilizando caixa de mensagem
Sistemas operacionais
// Gerenciamento de processos
// Gerenciamento de memória
Declaração de variáveis e constantes
// Variável
// Constante
// Aplicando os conceitos
Introdução ao Visual Basic
O Visual Basic (VB) é uma linguagem de programação orientada a eventos de terceira geração, lançada pela Microsoft em 1991. Ela evoluiu da versão anterior do DOS, chamada BASIC.
Essa linguagem foi criada para permitir que iniciantes no mundo da programação pudessem ter facilidade no aprendizado. Porém, com o passar do tempo, ela evoluiu e é utilizada em diversos tipos de aplicações.
De modo análogo, nasceu o Visual Basic for Application (VBA). Entretanto, este tem como objetivo executar suas instruções em aplicações do pacote Office da Microsoft.
O VB e o VBA compartilham semelhanças fundamentais. O primeiro ganhou popularidade como uma terceira geração que suporta um ambiente de desenvolvimento integrado introduzido pela Microsoft. Posteriormente, foi alterado para uma versão da plataforma .NET. 
O VBA é colocado em muitos pacotes de aplicativos da Microsoft e também em produtos de terceiros. Os exemplos incluem SolidWorks, ArcGIS, AutoCAD, Sage Accpac ERP, WordPerfect Office, entre outros.
Resumidamente, podemos dizer que a principal diferença entre eles é que o VB pode criar executáveis independentes, enquanto o VBA lida, principalmente, com a programação em aplicativos do Office, como Word, Excel, Outlook etc.
CURIOSIDADE
Apesar de surgirem da mesma origem, os programas desenvolvidos no Visual Basic são considerados rápidos em resposta aos desenvolvidos no VBA. Isso se deve ao fato de o VBA consumir muito realizando chamadas à API do Windows. Podemos, ainda, acrescentar que o VB é uma linguagem compilada, enquanto o VBA apresenta uma parcialmente compilada, e que requer um interpretador.
DEFININDO VBA
O VBA é uma ramificação da linguagem Visual Basic, que permite que os programas da Microsoft se comuniquem entre si com base em eventos ou ações que ocorrem nesses programas. 
Como a Microsoft criou essa linguagem para acompanhar seus próprios aplicativos, o código é muito intuitivo para o usuário. Por exemplo, ao ler uma linha de código no Excel que indique Range("A1:B4").ClearContents, é possível supor que esta diz ao Excel para limpar o conteúdo das células A1 a B4. O que é importante, pois permite que os usuários que não possuem familiaridade com programação de computador possam entender facilmente o funcionamento da linguagem VBA.
// Convenções de nomenclatura e padrõe
Para que a leitura do material seja realizada de forma mais fluida, é recomendada a definição de alguns termos que possam auxiliar os estudos. São eles:
Pasta de trabalho ou workbook: Trata-se do arquivo proveniente do Excel (Arquivo.xlsx), propriamente dito. Nele, são criadas as planilhas;
Planilha ou worksheet: Um único arquivo ou pasta de trabalho pode conter uma ou mais planilhas. Cada uma delas pode apresentar um conteúdo diferente, e é possível selecioná-las por abas na parte inferior da pasta de trabalho;
Criar um novo projeto VBA: Significa que é preciso criar um novo projeto ou pasta de trabalho do Excel e salvá-lo com o nome que preferir. Em seguida, para abrir o ambiente de desenvolvimento do VBA, pressione em conjunto as teclas ALT + F11. Para retornar ao Excel, faça o mesmo;
Executar um código: Significa que é necessário pressionar a tecla F5 do teclado ou ir no menu “Executar” e, posteriormente, em “Executar Sub/UserForm”. Dependendo da quantidade de subprocedimentos, deve aparecer uma lista. Selecione a Sub que deseja executar.
// Habilitando o modo desenvolvedor no Excel
Para que possa utilizar todos os recursos do VBA no Excel, é necessário que seja habilitada a função “Desenvolvedor”. Para tanto, siga as etapas enumeradas abaixo:
Etapa 1 - Primeiro, ative o menu “Desenvolvedor” no Excel 20XX. Assim, clique em “Arquivo” e, então, em “Opções”.
Figura 1. Ativar guia desenvolvedor.
Etapa 2 - Clique na guia “Personalizar Faixa de Opções” e marque a opção “Desenvolvedor” (Figura 1). Clique em “OK”.
Etapa 3 - Assim, a guia “Desenvolvedor” está disponível (Figura 2).
Figura 2. Guia Desenvolvedor.
Na guia pronta (Figura 2), a primeira opção é “Visual Basic”. Ao clicar nela, abre-se o ambiente de desenvolvimento VBA. É possível também acessá-lo pressionando ALT + F11.
CURIOSIDADE
A guia “Desenvolvedor” apresenta muitas ferramentas para o desenvolvimento de aplicações em VBA. Uma das possibilidades é a criação de um formulário inserindo botões, campos para entrada de texto e outros elementos. Para isto, basta selecionar a opção “Inserir”, experimente!
Nessa guia, o segundo botão é utilizado para criar macros, o que pode ser feito ao clicar no mesmo (veremos mais adiante como criar macros) ou ao pressionar as teclas ALT + F8.
COMPONENTES DO VBA
Veremos as definições de módulo, procedimento VBA, procedimento Sub e procedimento de função.
Módulos
O código VBA é digitado e exibido no editor do VBA nos chamados módulos. Uma coleção de módulos é o que denominamos de projeto VBA. No editor do VBA, um módulo VBA, quando exibido, se assemelha e se comporta como um documento do Word na organização básica e na digitação. Quando visualizado, um módulo aparecerá em sua própria janela no editor. Pense nos módulos como pastas organizacionais para o seu código; adicione módulos VBA, conforme necessário, a um projeto para organizar e executar o código.
Os módulos são compostos de blocos de construção elementares chamados procedimentos, os quais são usados para organizar e executar seu código em um módulo. Considere um parágrafo em um documento do Word; são digitados comandos, variáveis, matrizes, loops, lógicas, funções do Excel, entre outros, nos procedimentos do módulo VBA, e, assim, são executados o procedimento (para controlar o Microsoft Excel) e várias outras tarefas. 
Procedimentos
Um procedimento é definido como um grupo nomeado de instruções que são executadas em unidade; novamente, pense como se fosse um parágrafo em um documento do Word, com um nome no início. Uma declaração é simplesmente uma linha de código completa. 
No Excel VBA, os procedimentos geralmente são chamados de macros, o que é, na verdade, uma gíria, e um retorno aos tempos anteriores ao VBA no Excel quando eram utilizadas folhas de macro para criar código. Os procedimentos VBA são aplicados para executar tarefas (por exemplo, automatizar o ambiente do Excel), comunicar-se com bancos de dados, calcular fórmulas, analisar dados da planilha, criar gráficos, inserir e excluir colunas etc.
Os dois principais tipos de procedimentos são Function (Função) e Sub.
Função
Uma função é um grupo de código reutilizável, que pode ser chamado em qualquer lugar do seu programa. Isso elimina a necessidade de escrever o mesmo código repetidamente, além de ajudar os programadores a dividir um grande programa em várias funções pequenas e gerenciáveis.
Além das funções embutidas, o VBA também permite elaborar funções definidas pelo usuário e as instruções são escritas entre Function e End Function.
Subprocedimentos
Os subprocedimentos funcionam de maneira semelhante às funções. Embora não retornem um valor, as funções podem ou não retornar. É possível chamar os procedimentos secundários sem a palavra-chave de chamada. Os subprocedimentos são sempre incluídos nas instruções Sub e End Sub.
BIBLIOTECA DE OBJETOS
O papel do VBA é dar suporte e interpretar o conjunto de objetos quecompõem a biblioteca do Excel. Por exemplo, a pasta de trabalho é representada pelo objeto workbook; já uma planilha é representada pelo objeto worksheet, e, para selecionar um intervalo de células nesta planilha, invocamos o objeto range.
A programação usando o VBA conta com alguns objetos importantes com os quais o usuário pode lidar:
 Objetos de aplicativo;
 Objetos da pasta de trabalho;
 Objetos de planilha;
 Objetos range.
// Objetos de aplicativo
Consistem em:
 Configurações e opções para todo o aplicativo; e,
 Métodos que retornam objetos de nível superior, como ActiveCell, ActiveSheet, e assim por diante.
Exemplo 1: abrir um arquivo chamado teste.xls que está no diretório C:\
Set xlapp = CreateObject("Excel.Sheet") 
xlapp.Application.Workbooks.Open "C:\teste.xls"
Exemplo 2: deixar a célula selecionada com fonte em negrito
Application.ActiveCell.Font.Bold = True
// Objetos da pasta de trabalho
Este objeto é um membro da coleção de pastas de trabalho e contém todas as planilhas abertas no Microsoft Excel. Sendo assim, após especificar o aplicativo a ser usado, é necessário informar ao Excel qual pasta de trabalho ou planilha se pretende modificar.
ThisWorkbook
Faz referência à pasta de trabalho na qual seu código VBA está escrito. Normalmente, é usada quando se quer que a macro realize ações apenas em uma das pastas. A vantagem é que, se estiver visualizando outra pasta de trabalho e, acidentalmente, seu código for executado, isso não vai causar danos, tendo em vista que não é possível desfazer os comandos de uma macro uma vez que ela tenha sido executada;
ActiveWorkbook
Refere-se à pasta de trabalho que está sendo visualizada na tela. Ao criar o código, este tipo de função visa afetar qualquer pasta de trabalho (por exemplo, escrever uma macro para formatar o texto de uma maneira específica);
Workbooks("Arquivo.xlsx")
Realizar este tipo de referência no nível da pasta de trabalho permite especificar o nome da mesma com a qual pretende executar uma ação. É arriscado, considerando que, ao mudar o nome deste documento, não será mais possível encontrar a pasta porque está fazendo referência ao nome antigo;
Workbooks(1)
Quando utilizado um número para fazer referência a uma pasta de trabalho, está se referindo à ordem em que elas foram abertas pelo Excel.
Exemplo 1: fechar a sua pasta de trabalho
Workbooks.Close
Exemplo 2: criar uma nova pasta de trabalho
Workbooks.Add
Exemplo 3:  abrir a “Planilha2” da pasta de trabalho “teste.xlsx”
Workbooks("teste.xlsx").Worksheets("Planilha2").Activate
// Objetos de planilha
O objeto Planilha é um membro da coleção Planilhas, e contém todos os objetos do tipo Planilha que compõem uma pasta de trabalho. Deste modo, depois de especificar a pasta de trabalho à qual vai ser direcionado, é preciso avançar para o próximo nível e indicar a guia, ou planilha, para a qual se pretende que o código aponte. O nível da planilha possui algumas opções de referência, tais como:
ActiveSheet
Essa funcionalidade é muito semelhante ao ActiveWorkbook. O ActiveSheet aponta para a guia que está sendo visualizada no momento. É interessante tal aplicação para quando se pretende dar ao código a flexibilidade de executar em uma planilha de sua escolha;
Worksheets("Planilha1")
Nesse caso, é possível especificar o nome da planilha que deseja trabalhar. Como o nome da planilha é considerado texto e não faz parte do idioma do VBA, é preciso garantir que o nome da guia esteja entre aspas. O que permite que o objeto Planilha saiba que está sendo digitado o nome de uma planilha e não de um arquivo, por exemplo. Se o nome não consta entre aspas, o VBA lê que Planilha1 é uma variável criada ao invés de texto;
Worksheets(2)
Também é possível realizar uma ação na planilha de acordo com a ordem apresentada entre parênteses. Por exemplo, no caso de Worksheets(2), é praticada uma ação na segunda planilha ou na segunda aba aberta na pasta de trabalho.
Exemplo 1: fazer a segunda planilha ficar invisível (oculta)
Worksheets(2).Visible = False
Exemplo 2: proteger a Planilha3 com uma senha (a senha será 123456)
Worksheets("Planilha4").Protect Password:="123456"
// Objetos Range
Objetos Range representam uma célula (ou uma seleção delas), uma linha ou uma coluna contendo um ou mais blocos contínuos das mesmas. Primeiro, é preciso indicar a planilha a ser modificada, e, depois, as células. Existem várias maneiras de dizer ao VBA qual intervalo deseja:
Referenciar uma única célula - Range("A4")
É possível fazer referência a uma célula inserindo o nome (do intervalo) entre aspas;
Referenciar uma única célula - Cells(4,1)
Pode fazer referência a uma célula usando Cells() e, inserindo, respectivamente, o número da coluna (A é 1, B é 2, C é 3, ...) e o número da linha;
Referenciar várias células - Range("A1:B4")
É semelhante à seleção de uma única célula. Porém, nessa hipótese, insira a primeira coluna superior à esquerda, e a última coluna do intervalo no inferior direito;
Referenciar várias células - Range(Cells(1,1),Cells(2,4))
Ao incorporar duas referências de Células() dentro de uma função Range(), é possibilitada a consulta de várias células. Para este caso apresentado, Cells(1,1) representa o A1, e Cells(2,4) representa o B4.
Exemplo 1: Inserir valor 5 na célula A8 da Planilha1
Worksheets("Planilha1").Range("A8").Value = "5"
Exemplo 2: Inserir o valor 2381 nas células de A1 até B5
Worksheets("Planilha1").Range("A1:B5").Value = "2381"
EDITOR VBA
O Visual Basic Editor é o espaço de trabalho para criar o código VBA (Figura 1). O editor pode ser acessado por meio da guia “Desenvolvedor”, ou usando o atalho Alt + F11 no Excel. Ele é exibido em uma nova janela, completamente separada do aplicativo do Office.
Importante saber que cada um dos programas do pacote Office possui seu próprio editor VBA (para que seja viável, por exemplo, ter os editores VBA do Excel e PowerPoint abertos ao mesmo tempo).
A Figura 3 apresenta algumas das janelas principais que podem ser mostradas no editor do Visual Basic. Alguns deles podem não aparecer no editor por padrão, mas explicaremos, a seguir, como exibi-los. A descrição do editor do Visual Basic do Excel é feita, e muitas das informações são facilmente replicadas no PowerPoint, Access ou qualquer um dos editores do Visual Basic de outro programa do pacote Office.
Figura 3. Ambiente de desenvolvimento VBA.
Vejamos, então, os principais componentes elencados na Figura 3:
Janela Projeto
Aqui, estão todos os arquivos abertos e que fazem parte do seu projeto. Essa janela usa uma exibição em árvore na qual é possível detalhar cada arquivo que foi aberto, além tornar possível a visualização das áreas nas quais consegue inserir o código VBA;
Janela Propriedades
Permite modificar certos aspectos de qualquer objeto, formulário ou módulo destacado;
Área de escrita de código
É onde deve ser escrito e editado o código VBA. Cada macro deve começar com uma instrução Sub (que é aberta com Sub e fechada com End Sub). De forma a deixar o código mais organizado, o editor organiza em cores diferentes as palavras-chaves. Falando em organização, é importante sempre usar recuos (através da tecla Tab) dentro do código. Isso ajuda (e muito) na leitura do código criado e em uma futura manutenção. Também auxilia caso alguém precise dar assistência no desenvolvimento do código;
Janela de verificação imediata
Esta área é semelhante a um rascunho, pois permite que sejam feitos todos os tipos de testes enquanto o código é escrito e executado. É bastante útil e usada, no entanto, por padrão, ela fica oculta. Deste modo, use o atalho CTRL+G para visualizá-la;
Janela de observação/inspeção
Mostra todos os dados armazenados em uma variável. Algumas delas não apresentam muitos dados armazenados. No entanto, se fosse observada uma variável atribuída a uma célula, seriam encontrados diversos dados (como cor da fonte, valor, altura, cor do preenchimento etc.). A utilidade se dá, principalmente, ao tentar depurar o código e entender qual o valor da variável em um determinado momentodo código. Para inspecionar uma variável, é preciso destacar o nome dela e clicar no botão “Adicionar Observação” (este é o ícone de óculos, localizado na barra de ferramentas de depuração). Repare se a variável aparece na janela de inspeção. Depois de começar a executar o código e carregar um valor para sua variável, procure uma opção (sinal +) para detalhar ou expandir o conteúdo que está armazenado na variável.
Recomenda-se fortemente a exploração deste ambiente a fim de conhecer, testar e experimentar suas funcionalidades, mesmo não tendo o código ainda, pois familiarizar-se com este ambiente é o primeiro passo.
O QUE SÃO MACROS?
Podemos definir uma macro (também referenciada como Procedimento ou Sub-rotina) como um agrupamento de código que executa uma série de tarefas ou comandos direcionados em um programa de computador (nesse caso estudado, no Excel). As macros podem conter código que executa cálculos, copia e cola, altera a formatação de uma tabela e várias outras interações. A maioria dos usuários do Office usa macros para automatizar tarefas rotineiras que demoram muito tempo para serem executadas manualmente (por teclado e mouse).
// Criando a primeira macro
Agora, vamos criar nossa primeira macro, que será bem simples: ao pressionar uma tecla de atalho (CTRL+SHIFT+T), seu nome e a data atual aparecerão em negrito e em letras grandes no Excel. Deste modo, comece abrindo-o e, em seguida, execute linha a linha do algoritmo descrito no Quadro 1 (sim, é um algoritmo!).
Quadro 1. Algoritmo para criar uma macro.
CURIOSIDADE
É possível criar a macro por dois caminhos diferentes: o primeiro é acessando a guia “Desenvolvedor” e escolhendo a opção “Gravar Macro”; o segundo caminho é por meio de um ícone (uma imagem com o desenho de uma bolinha) presente no canto inferior esquerdo da tela do Excel. Ao clicar nele, é possível iniciar a gravação de uma macro, ou seja, a mesma ação do botão da guia “Desenvolvedor”.
Se os passos foram seguidos corretamente, você acabou de criar sua primeira macro! Parabéns! 
Vamos, então, testá-la. Para isso, vá para uma célula vazia e, depois, pressione o atalho criado no passo 4 (CTRL + SHIFT + E).
CRIANDO NOSSA PRIMEIRA MACRO UTILIZANDO CÓDIGO VBA
Uma vez conhecidos os conceitos de objetos de VBA, e também a criação de macros, vamos criar algumas aplicações simples, porém essenciais para o nosso estudo. O primeiro passo, então, é criar um novo projeto VBA. Salve o arquivo com o nome “prog1.xlsx”.
Deste modo, o ambiente de desenvolvimento do VBA é aberto, conforme demonstrado na Figura 4.
Veja, na janela de “Projetos”, que há, na primeira linha, o nome do projeto e, na segunda linha, uma pasta com arquivos EstaPastaDeTrabalho (referente ao Workbook) e Planilha1 (referente ao Worksheet).
Primeiramente, adicione um módulo, clique com o botão direito sobre o diretório “Microsoft Excel Objetos” no painel de projetos (veja este diretório na Figura 2). Após, clique em “Inserir” e, então, em “Módulo”.
Figura 4. Ambiente de desenvolvimento VBA.
Uma vez criado o módulo, abra-o para adicionar o primeiro código. Na área de escrita de código, insira o seguinte:
Sub primeirocodigo()
 'Ativando a planilha 1
 Sheets("Planilha1").Activate
 
 'Coloca um valor no intervalo A8, neste caso, 92
 Range("A8").Value = 92
 
 'Coloca o valor "Bom dia!" na linha 1, de A até D
 Range("A1:D1").Value = "Bom dia!"
 'Coloca o valor " Boa tarde!" na linha 2, de A até D
 Range("A2:D2") = "Boa tarde!"
End Sub
Este é o nosso subprocedimento. Veja que ele inicia com Sub, seguido do nome do subprocedimento e encerra com o comando End Sub, ou seja, é o fim dele.
Observações:
 O símbolo ‘’ (aspas simples) indica um comentário, portanto, é um trecho que não faz parte do código, não visível para o usuário;
 A sexta linha do código coloca o valor 92 na célula A8. Note o comando “value” após o “Range”;
 Observe que foi realizado o mesmo procedimento na linha 12, porém, não usamos o “value”.  Isso ocorre, tendo em vista que, se nenhum outro método for chamado, fica entendido que deve ser colocado um valor na célula.
Após digitar este código, pressione F5 no teclado e, em sequência, volte para a planilha pressionando ALT+F11 e examine o que mudou em sua planilha.
Vamos agora criar uma outra macro, que será responsável por formatar as células no intervalo A1:E6. De forma a organizar, crie um novo módulo e, nele, adicione o código a seguir:
Sub primeirocodigo()
 Range("A1:E6") = "999"
 Range("A1:E6").Borders.Weight = 3
 Range("A1:E6").Font.Bold = True
 Range("A1:E6").Font.Size = 18
 Range("A1:E6").Font.Italic = True
 Range("A1:E6").Font.Name = "Arial"
End Sub
Após inserir o código, pressione F5 e, em seguida, volte para o Excel. É criado um efeito muito interessante, conforme Figura 5.
Figura 5. Saída do procedimento executado.
Mas, vejamos o código:
 na segunda linha, é inserido o valor para o intervalo de A1 a E6;
 na terceira linha, indicada a espessura da borda; e,
 nas linhas seguintes, a formatação da fonte.
Apesar de a saída ser muito eficiente (vários valores em uma única execução), o código fonte não se mostra muito atraente. Note que, exceto a primeira e a última linha, todas as demais possuem o mesmo início. Para evitar tal repetição, utilize o comando With. Veja o código com esse comando e sua estrutura, abrindo o escopo com With e fechando com End With. Para que a diferença possa ser vista, mudemos o valor de 999 para 22. Faça o teste!
Sub primeirocodigo()
 With Range("A1:E6")
 .Value = "22"
 .Borders.Weight = 3
 .Font.Bold = True
 .Font.Size = 18
 .Font.Italic = True
 .Font.Name = "Arial"
 End With
End Sub
UTILIZANDO CAIXA DE MENSAGEM
A função MsgBox exibe uma caixa de mensagem e aguarda o usuário clicar em um botão para, então, executar uma ação com base no botão clicado. Observe a sintaxe deste componente:
MsgBox(prompt[,botões][,titulo][,ajuda,contexto])
Aviso ou Prompt (parâmetro obrigatório)
É a mensagem que aparece na caixa de diálogo e seu comprimento máximo é de, aproximadamente, 1024 caracteres.
Botões (parâmetro opcional)
Expressão numérica que especifica o tipo de botão a ser exibido, o estilo de ícone a ser usado, a identidade do botão padrão e o tipo de caixa de mensagem. Caso seja deixado em branco, os valores padrões para os botões são 0. Este parâmetro pode assumir os 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 “Mensagem crítica”;
· 32 - VbQuestion - exibe o ícone “Consulta de Aviso”;
· 48 - VbExclamation - exibe o ícone “Mensagem de aviso”;
· 64 - VbInformation - exibe o ícone “Mensagem informativa”;
· 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 - o quarto botão é o padrão;
· 0 - VbApplicationModal Application modal - o aplicativo atual não funcionará até que o usuário responda à “Caixa de mensagem”;
· 4096 vbSystemModal System modal - todos os aplicativos não funcionarão até que o usuário responda à “Caixa de mensagem”.
Os valores mostrados são divididos em quatro grupos: o primeiro grupo (1 a 6) indica os botões a serem exibidos na caixa de mensagem. O segundo (7 a 10) descreve o estilo do ícone a ser exibido; o terceiro (11 a 14) indica qual botão deve ser o padrão; e o quarto grupo (15 e 16) determina a modalidade da “Caixa de mensagem”.
Título (parâmetro opcional)
Expressão string exibida na barra de título da “Caixa de diálogo”. Se for deixado em branco, o nome do aplicativo será colocado na barra de título.
Ajuda (parâmetro opcional)
Expressão string que identificao arquivo de “Ajuda” a ser usado para fornecer ajuda sensível ao contexto para a caixa de diálogo.
Contexto (parâmetro opcional)
Expressão numérica que identifica o número de contexto da “Ajuda” e a relaciona com o tópico apropriado. Se o contexto for fornecido, o arquivo de “Ajuda” também deverá ser fornecido.
Retorno de valores
Ao clicar em um botão na “Caixa de mensagem”, a função MsgBox retorna os seguintes valores, identificando o botão clicado:
· vbOK - clicado o botão “OK” - retorna 1;
· vbCancel - clicado o botão “Cancelar” - retorna 2;
· vbAbort - clicado o botão para “Abortar” - retorna 3;
· vbRetry - clicado o botão para “Repetir” - retorna 4;
· vbIgnore - clicado o botão “Ignorar” - retorna 5;
· vbSim - clicado o botão “Sim” - retorna 6;
· vbNo - clicado o botão “Não” - retorna 7.
Várias interações com o elemento MsgBox e seus botões serão vistas no tópico sobre declaração de variáveis e constantes. Por enquanto, crie um novo módulo e teste este exemplo de código que mostra duas mensagens na tela para o usuário:
Sub terceirocodigo()
 'Mostra mensagem com botão OK E exibe ícone de informação
 MsgBox "Mensagem para te informar alguma coisa", 0 + 64, "Atenção - Mensagem sem retorno"
 
 'Mostra mensagem com sim ou não E exibe ícone de questão
 Resposta = MsgBox("Seu nome é joão?", 4 + 32, "Mensagem com Retorno")
End Sub
Note que, para exibir apenas o botão “Ok” e o “Ícone de Informação”, devem ser colocados seus valores lógicos 0 + 64. O mesmo ocorreu para mostrar os botões “Sim” ou “Não” (valor lógico 4) e o “Ícone de Interrogação” (valor lógico 32) ficando 4 + 32.
Sistemas operacionais
Os sistemas operacionais são programas complexos responsáveis por gerenciar os quatro principais recursos do computador: processo, memória, entrada e saída e sistema de arquivos.
O gerenciamento inclui ainda o escalonamento do uso destes recursos, de modo que sejam evitados possíveis conflitos ou processos interferindo em outros processos. Por fim, diferentemente da grande maioria dos programas, os quais são encerrados assim que concluem uma tarefa, o sistema operacional é executado por tempo indefinido e só finaliza quando o computador é desligado.
Para este estudo, serão analisados os gerenciamentos de processo e o de memória. Não focaremos nos conceitos aprofundados da arquitetura de um sistema operacional.
GERENCIAMENTO DE PROCESSOS
Indo diretamente ao ponto central desse tópico, é possível definir um processo como um programa em execução, cuja realização se dá em ordem sequencial e baseada em algoritmos.
A arquitetura de processo pode ser dividida em quatro seções:
 Pilha: armazena todos os dados temporários, como parâmetros de variáveis, variáveis locais e endereços de retorno;
 Heap: aloca a memória para ser processada durante o tempo de execução;
 Dados: contêm as variáveis;
 Texto: apresenta a atividade atual, a qual é representada por um contador do programa.
// Estados de um processo
Os processos são divididos em três estados fundamentais. São eles: Aguardando, Executando e Bloqueado, conforme o Diagrama 1.
Diagrama 1. Diagrama dos estados do processo.
Analisando os estados de modo separado, temos:
Aguardando: ao executar o programa VBA (ou qualquer outro), este processo entra para uma fila de execução, aguardando para acessar o processador e ser executado. O escalonador coloca o processo no processador. Existem vários algoritmos de escalonamento (não entraremos em detalhes), porém, são eles que garantem a correta (e justa) utilização do processador;
Executando: assim que é dado o time para a execução do programa VBA, o mesmo é retirado da fila de aguardando e colocado no processador em execução. Todo processo tem um quantum, que é quanto tempo ele pode utilizar da CPU. Como existem processos que possuem prioridades em relação a outros, o escalonador escolhe quando e como tirar o programa VBA do processador e retorná-lo para a fila de espera. Por exemplo, esse programa não possui maior prioridade do que um processo do sistema operacional. Desse modo, o programa é retirado do processador por preempção, e colocado no final da fila de espera, para que permita a execução do processo do sistema operacional;
Bloqueado: o processo fica bloqueado enquanto aguarda os recursos de entrada e saída – por exemplo, nosso programa precisa ler um arquivo do disco rígido, ou seja, depende de entrada e saída, por isso  depende de entrada e saída. Ou ele precisa aguardar o usuário inserir uma entrada (seu nome, seus dados pessoais, dois números para somar etc.). Assim, o processo entra em estado de bloqueio para que, após receber as entradas necessárias ou obter o retorno dos recursos necessários, ele possa voltar para a fila de espera.
A troca dos estados do processo é chamada de Troca de Contexto, e ocorre milhares de vezes por segundo, o que passa a impressão de que tudo está sendo executado ao mesmo tempo no processador, de modo paralelo, mas não está; é cada processo por vez e, em cada uma das vezes, ele possui um tempo máximo (quantum) para ocupar o processador.
GERENCIAMENTO DE MEMÓRIA
Memória principal refere-se a uma memória física que é aquela interna no computador. A principal também é chamada de memória primária ou memória RAM (Random Access Memory). Por outro lado, a memória secundária está relacionada a dispositivos externos de armazenamento em massa, como unidades de disco.
O sistema operacional gerencia e realiza alterações apenas nos dados que estão na memória principal. Portanto, todos os programas executados e todos os arquivos acessados devem ser copiados de um dispositivo de armazenamento (memória secundária) para a memória principal.
Todos os programas são carregados na memória principal para execução. Às vezes, um programa completo é carregado na memória, mas, algumas outras vezes, uma determinada parte ou rotina dele é carregada na memória principal somente quando é chamada pelo programa. Esse mecanismo é denominado carregamento dinâmico e tem como função melhorar o desempenho.
// Swapping
Um processo (programa) precisa estar na memória para que seja possível ser executado. No entanto, por vezes, não há memória principal suficiente para armazenar todos os processos atualmente ativos. Assim, o excesso de processo é mantido em disco e trazido para execução dinâmica. A realização de Swapping traz cada processo para a memória principal, executa-o por um tempo e coloca-o novamente no disco.
// Fragmentação
Ocorre quando o sistema de alocação de memória dinâmica tenta usar a que está disponível, mas a maioria dos blocos livres é pequena demais para atender a esta solicitação.
Neste caso, os processos são carregados e removidos da memória. Como resultado, existem blocos livres para atender a uma solicitação, mas que não são contíguos. Ou seja, a memória é fragmentada em um grande número de blocos pequenos. É a chamada fragmentação externa. Veja este exemplo na Figura 7(a):
Quadro 2. (a) Fragmentação externa; (b) fragmentação interna
No Quadro 2(a), é possível observar 160K de memória livre, entretanto, se um processo necessitar de 160K de memória contígua não será viável, pois não há este valor. Neste caso, ocorre a fragmentação externa.
De outro modo, no Quadro 2(b) a memória alocada para um processo é maior que a solicitada. Assim, o processo precisa de 5MB, no entanto, é dado a ele 8MB, ficando 3MB inutilizável até que o processo termine. Esse tipo de evento é nomeado de fragmentação interna.
// Paginação (Paging)
Um processo pode ter a entrada negada em execução, caso não haja espaço em memória. Assim, a fragmentação é um grande problema para o sistema operacional. Para resolvê-lo, é possível contar com um mecanismo de gerenciamento de memória que permite que o espaço de endereço físico de um processo não seja prejudicado, o que é denominado de paginação. A memória física é dividida em blocos de tamanhos iguais, as quais são chamadas de “páginas”, e, aquelas pertencentes a um determinado processo, são carregadas nos quadros de memória disponíveis.
// SegmentaçãoOutra técnica de gerenciamento de memória é a segmentação, a qual permite a quebra do espaço de endereço virtual de um único processo em segmentos, que podem ser colocados em áreas não contíguas da memória física.
Declaração de variáveis e constantes
Há dois temas que acompanham toda a vida dos programadores, e é necessário abordá-los: são as variáveis e constantes.
VARIÁVEL
Uma variável representa um local da memória que é usado para armazenar um valor, o qual pode ser do tipo numérico, caractere ou lógico. O valor da variável na memória pode ser alterado durante a execução do programa desenvolvido.
O nome de uma variável deve iniciar com letra maiúscula ou minúscula. Os demais caracteres podem ser letras, números ou o sinal ‘_’. Por convenção, uma variável não pode conter ponto, vírgula, exclamação, interrogação ou qualquer outro caractere especial.
Também não pode inserir o sinal de traço ‘-‘, uma vez que, na linguagem, ele representa o símbolo de subtração. Deste modo, ao colocar um traço no nome da variável, o compilador pode entender que deseja subtrair um valor pelo outro. Por fim, não se deve utilizar palavras reservadas do Visual Basic.
// Tipos de dados 
No VBA assim como em outras linguagens, existem diversos tipos de dados, numéricos ou não numéricos. A Tabela 1 apresenta estes tipos de dados e a faixa de valor possível para eles:
Tabela 1. Tipos de dados.
Vejamos, então, um exemplo de uso de variáveis. Deste modo, crie um novo projeto VBA e, para ele, crie uma macro chamada variaveis(). Veja o código:
Sub variaveis()
 'Declarando a variável
 Dim minha_variavel As String
 Dim titulo As String
 'Atribuindo um valor à variável
 minha_variavel = "Conteúdo da variável..."
 'Atribuindo um valor à variável que será mostrado no título da MsgBox
 titulo = "Caixa de mensagem - Teste de variável"
 'Exibindo o valor de my_variable em uma MsgBox
 MsgBox minha_variavel, 0, titulo
End Sub
As primeiras linhas do código (que iniciam em Dim) declaram as variáveis. Geralmente, as variáveis são declaradas no início do procedimento.
 Dim: declara a variável;
 minha_variavel / titulo: os nomes das duas variáveis que estamos utilizando;
 As: declara o tipo;
 String: este é o tipo da variável que indica a natureza do seu conteúdo. E, nesse caso, o tipo é string, ou seja, formada por caracteres alfanuméricos.
Vejamos um segundo exemplo, apresentando diferentes tipos de variáveis. É possível colocar no mesmo subprocedimento criado anteriormente denominado variaveis().
Sub variaveis()
 'Exemplo: texto para nome
 Dim nome As String
 nome = "Laís"
 Worksheets("Planilha1").Range("A1").Value = "Nome"
 Worksheets("Planilha1").Range("A2").Value = nome
 'Exemplo: numero referenciando idade
 Dim idade As Integer
 idade = 20
 Worksheets("Planilha1").Range("B1").Value = "Idade"
 Worksheets("Planilha1").Range("B2").Value = idade
 'Exemplo: numero para altura
 Dim altura As Double
 altura = 1.8
 Worksheets("Planilha1").Range("C1").Value = "Altura"
 Worksheets("Planilha1").Range("C2").Value = altura
 'Exemplo: data de nascimento
 Dim dtNascimento As Date
 dataNascimento = "28/01/2000"
 Worksheets("Planilha1").Range("D1").Value = "Nascimento"
 Worksheets("Planilha1").Range("D2").Value = dtNascimento
 'Exemplo: booleano para dizer se estuda ou não
 Dim estuda As Boolean
 estuda = True
 Worksheets("Planilha1").Range("E1").Value = "Estuda?"
 Worksheets("Planilha1").Range("E2").Value = estuda
End Sub
Este código apresenta diversas variáveis, conforme analisaremos. Ao declarar “Dim nome As String”, há uma variável chamada nome que aponta para a memória. Nela, é inserido o valor “Laís”, o qual pode ser modificado a qualquer momento no código.
Em seguida, são adicionadas duas linhas de inserção na planilha: a primeira linha coloca um texto, como se fosse o cabeçalho da coluna, escrevendo o texto “Nome”. Logo na linha de baixo do código, é colocado para inserir o conteúdo da variável. Note que, ao final, depois de “.value=”, é inserida a variável “nome”. Não é posto um valor direto, mas sim, um que está armazenado na variável. O mesmo se repetiu para todas as variáveis.
Consideremos um exemplo de uma InputBox (semelhante a MsgBox) que aceita o valor de entrada do usuário e, após clicar no botão “OK”, insere o valor na planilha na célula B5, e também mostra uma outra MsgBox com o valor informado. Veja o código:
Sub variaveis()
 Dim resultado As String
 resultado = InputBox("Qual o seu nome?", "Perguntando o seu nome")
 MsgBox resultado
 Worksheets("Planilha1").Range("B5").Value = resultado
End Sub
Como antes, é declarada a variável resultado que, por sua vez, está recebendo a saída de um InputBox. Depois, note que, primeiramente, é mostrado o MsgBox com o resultado digitado e, depois, é inserido na planilha o valor da variável resultado.
Além de colocar valores das variáveis nas células da planilha, é possível fazer a direção contrária: pegar valores da planilha e adicionar nas variáveis. Para o algoritmo proposto, é preciso montar a seguinte estrutura para a Planilha1 (Figura 6):
Figura 6. Estrutura para a Planilha1.
O código vai obter os valores que estão na planilha e, em sequência, colocar cada um em uma variável. Por fim, é mostrada uma MsgBox com estes valores. O código é apresentado a seguir:
Sub variaveis()
 Dim nome As String, profissao As String, idade As Integer
 nome = Cells(2, 1) 'equivale A2
 idade = Cells(2, 2) 'equivale B2
 profissao = Cells(2, 3) 'equivale C2
 'Dialog box
 MsgBox "O nome é " & nome & ", a idade é " & idade & " e a profissão é " & profissao
 End Sub
Note que, agora, são declaradas todas as variáveis na mesma linha, o que é possível e muito recomendado.
Outra ação diferente feita é no MsgBox. Nele, é utilizado o símbolo & ("e" comercial) para concatenar ou juntar dois valores. Observe que o texto “O nome é” está sendo concatenado com o valor da variável nome. Assim, quando o MsgBox aparece na tela, a impressão que se dá é que tudo pertence a uma mesma frase, porém, trata-se de uma sequência de concatenações.
Portanto, sempre que desejar ou precisar juntar dois textos, texto com variável, variável com texto com variável, utilize o & ("e" comercial).
CONSTANTE
Se, por um lado, a variável é um local da memória que armazena valores passíveis de alteração, por outro, uma constante representa um endereço de memória usado para armazenar 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 termina com um erro. As constantes são declaradas da mesma maneira que as variáveis são, no entanto, há um padrão para escrever constantes com letras maiúsculas. Assim, é possível identificar melhor o que é constante e o que é variável.
Desse modo, crie um novo projeto VBA e, para ele, crie uma macro chamada constantes(). Veja o código a seguir:
Sub constantes()
 Const inteiro As Integer = 5050
 Const data As Date = #22/04/1500#
 Const dia As String = "segunda-feira"
 MsgBox "Inteiro é " & inteiro & " data é " & data & " dia é " & dia
End Sub
Tente, por questão de teste, declarar uma linha antes do MsgBox fazendo com que inteiro=2. Será recebido o erro, conforme consta na Figura 7:
Figura 7. Erro de atribuição de valor a constante.
Ao retirar a função “Const”, e também a atribuição (= 5050), e, logo em seguida, tentar executar novamente, observe que é possível alterar, pois inteiro passará a ser uma variável e não mais uma constante.
APLICANDO OS CONCEITOS
Agora, vamos criar uma macro utilizando os conceitos vistos, criando dois botões no Excel, o que, apesar de ser algo inédito, é instruído abaixo. Cada botão executa uma ação: o primeiro insere valores na planilha; o segundo, por sua vez, remove os valores da planilha e mostra em uma MsgBox. Vamos lá?
Criar os procedimentos: no projeto desenvolvido, gere um novo módulo, conforme visto anteriormente. Em seguida, em um único módulo é preciso criar dois subprocedimentos. O primeirochamado “inserir_valores()” e o segundo “remover_valores()”. Veja o código de ambos, a seguir:
Sub inserir_valores()
 With Worksheets("Planilha1")
 .Range("A1").Value = "São Paulo"
 .Range("B1").Value = 22
 .Range("C1").Value = "Outono"
 End With
End Sub
 Sub remover_valores()
 Dim cidade As String
 Dim temperatura As Double
 Dim estacao As String
 cidade = Cells(1, 1)
 temperatura = Cells(1, 2)
 estacao = Cells(1, 3)
 MsgBox "É " & estacao & " na cidade de " & cidade & " e faz " & temperatura & "°C"
 Worksheets("Planilha1").Range("A1").Clear
End Sub
Criar os botões: gere um novo projeto VBA. Na Planilha1, insira dois botões. E, para tal, vá na aba “Desenvolvedor” e escolha a opção “Inserir”. Então, dentre os vários controles apresentados, selecione o “Botão (Controle de Formulário)”, como na Figura 8. Desenhe dois botões, um ao lado do outro, do tamanho e na posição que desejar.
Figura 8. Escolhendo o botão para desenhar.
Na sequência, uma caixa de diálogo aparecerá com o texto “Atribuir Macro”. Dentre as macros destacadas, escolha aquela adequada para o seu botão. Para o primeiro, escolha a macro “inserir_valores”; para o segundo, opte pela macro “remover_valores”.
Testando: no editor de código do VBA, pressione F5 para executar. Depois, volte para a planilha, aperte o primeiro botão e a planilha será preenchida. Pressione o segundo e ela será apagada para, em seguida, mostrar os valores no MsgBox.
Com isso, é produzido esse pequeno sistema que permite utilizar os principais conceitos como subprocedimento, variáveis e manipulação da planilha.
Agora é a hora de sintetizar tudo o que aprendemos nessa unidade. Vamos lá?!
SINTETIZANDO
Nesta unidade, apresentamos o Visual Basic. Inicialmente, foi possível observar que o Visual Basic é uma linguagem desenvolvida pela Microsoft com moldes no antigo Basic, das primeiras versões do Windows. E o VBA é uma extensão do VB, porém, voltado para as aplicações da Microsoft, como pacote Office e também para algumas outras aplicações proprietárias.
Estabelecemos o conceito de macro e a estrutura apagar (procedimento) de um código VBA. Foram criadas várias macros e feitos diversos testes, com o objetivo de conhecer boa parte do que a plataforma oferece.
Outro tópico importante abordado foram os sistemas operacionais. Vimos que o sistema operacional é responsável por gerenciar os processos, a memória, a entrada e a saída, e ainda o sistema de arquivos de um ambiente computacional. Tratamos e conceituamos o processo como um programa em execução, apagar que, ao ser alocado na memória, torna possível ocorrer a fragmentação interna ou fragmentação externa.
Por fim, foram definidos os conceitos de variáveis e constantes.
A programação é uma atividade que requer muito treino e dedicação. Desta maneira, teste todos os códigos apresentados aqui.
Bons estudos!
REFERÊNCIAS BIBLIOGRÁFICAS
CORMEN, T.; LEISERSON, C.; RIVEST, R.; STEIN, C. Algoritmos: teoria e prática. 2. ed. São Paulo: Campus, 2002.
EDELWEISS, N.; LIVI, M. Algoritmos e programação com exemplos em Pascal e C. Porto Alegre: Bookman, 2014.
MICROSOFT. Introdução ao VBA no Office. 14 ago. 2019. Disponível em: <https://docs.microsoft.com/pt-br/office/vba/library-reference/concepts/getting-started-with-vba-in-office>. Acesso em: 02 abr. 2020.
WALKENBACH, J. Programando Excel VBA para leigos. Rio de Janeiro: Alta Books, 2013.

Outros materiais