quarta-feira, 11 de fevereiro de 2009

Mudamos de endereço

É com grande satisfação que venho informá-los da nossa mudança de endereço. Já tem algum tempo que vocês devem ter notado que o nosso site não sofre alterações, e não apresenta novidades. Isso acontece devido a uma ênfase maior no meu site comercial, o www.excelexperts.com.br, que requer mais de minha atenção.

Por um tempo vocês ficaram desamparados de atualizações, mas isso passou, a partir de agora vocês já podem acessar o novo blog em blog.excelexperts.com.br sintam-se à vontade para usar e abusar desse nosso novo espaço, as informações contidas aqui, não serão transportadas para lá, mas ficarão aqui disponíveis para consulta, porém as novidades somente serão publicadas no novo blog, por favor, não deixe de nos fazer uma visita.

Muito obrigado pela compreensão.

terça-feira, 7 de outubro de 2008

Algorítimos

algorithm
algoritmo; regras usadas para definir ou executar uma tarefa específica ou para resolver um problema específico. (dic Michaelis)
Um algorítimo é uma sequência de passos, que leva a execução de uma tarefa. Quando você faz um bolo, não que programadores façam bolo, ao ler a receita do bolo você está seguindo os passos de um Algorítimo. Um algorítimo deve ser claro e muito preciso, imagine uma receita de bolo em que ao invés de duas xícaras de farinha de trigo, viesse escrito, coloque um pouco de farinha de trigo, quanto seria esse pouco? veja que a receita ficaria imprecisa, o que faria com que o seu bolo ficasse...
Um bom exemplo de algorítimo seriam os manuais de equipamentos eletrônicos, eles ensinam a você desde como ligar o equipamento até como gravar programas num vídeo cassete, digo, gravador de DVD de mesa.
Para tudo o que se tenha uma certa repetitividade, pode ser criado um algorítmo. Por Exemplo, vamos criar um algorítimo para comer um chocolate.

COMER UM CHOCOLATE
  • Pegar o chocolate
  • Retirar o Papel do Chocolate
  • Comer o chocolate
  • Jogar o papel no lixo
E se quisermos somar dois números???

SOMAR DOIS NÚMEROS
  • Escreva o primeiro número na variável A
  • Escreva o segundo número na variável B
  • Some a variável A com a Variável B e guarde o resultado na variável C
Os programas de computador não passam de algorítimos escritos numa linguagem de programação e que são interpretados e executados pelo computador, no caso de um programa de computador, o algorítimo é muito mais rígido do que o que desenvolvemos para essas tarefas acima.

Que tal agora que você já entendeu o que é um algorítimo, utilizar o espaço para comentário e criar um algorítimo para as seguintes sugestões

  1. Crie uma sequência lógica dos seus passos para tomar café da manhã.
  2. Faça um algorítimo para somar dois números e dividi-los por 2.
  3. Escreva uma sequência lógica para trocar o pneu de um carro.
  4. faça um algorítimo para trocar uma lâmpada.

quinta-feira, 14 de fevereiro de 2008

Lógica de Programação

Já vimos a interface do VBA, já vimos alguns exemplos, mas na minha opinião falta nesse blog os alicerces da programação. Programar é uma coisa muito gostosa, mas existe um conhecimento que é fundamental a todo o programador, é praticamente impossível programar sem conhecer esse instrumento, ele se chama Lógica de Programação.

Se você já é um conhecedor de programação, então já está familiarizado com as coisas que vou discutir ao longo das próximas postagens. Agora se você é um principiante dando os seus primeiros passos na programação em vba, estou certo de que as próximas palavras lhe ajudarão a compreender melhor o mundo da programação.

Lógica: Ciência que tem por objeto o estudo das leis do raciocínio; coerência; raciocínio encadeado; ligação de idéias (dicionário Brasileiro Globo)

A lógica de programação é a arte de encadear pensamentos para atingir um determinado objetivo.

Prático não é mesmo? Um programa funciona seguindo uma sequência lógica, criada pelo programador, funciona assim, o programa executa vários passos ordenados numa sequencia lógica, que resultam na solução de um problema.

O programador tem que pensar em como vai funcionar o programa, pensar como se fosse a máquina e definir os passos que o programa vai executar, para depois poder definir o algorítimo, o que? Você não sabe o que é algorítimo? Tudo bem na próxima postagem nós vamos falar sobre o algorítimo.

Por enquanto você já deve ter uma idéia um pouco melhor do que é lógica de programação, não desanime, ao longo dos próximos textos você vai compreender bem melhor o funcionamento disso, se tiver alguma dúvida ou sugestão não deixe de me comunicar.

José Alves
Técnico Informática
www.vendadecomputadores.com

terça-feira, 11 de dezembro de 2007

Construa o Seu Próprio Localizar

Que tal construir a sua própria caixa de diálogo “Localizar”? você pode me perguntar:

Mas por que motivo eu iria querer criar uma caixa de diálogo localizar se o Excel já possui esse recurso?

Bom a resposta é simples, primeiro você pode fazer pelo aprendizado, ou você pode estar construindo um sistema próprio e queira fazer o seu próprio formulário, ou ainda, você pode utilizar parte do código e adaptar para alguma outra aplicação que você esteja criando, ou então use a sua criatividade, as opções são muitas.

Para começar você precisa criar um formulário semelhante a esse aqui:

Esse formulário possui os seguintes controles:

Um rótulo, uma caixa de texto, uma caixa de seleção, e dois botões de comando.

Depois que você ajeitar esses controles no formulário vamos alterar as seguintes propriedades dos controles:


Rótulo
Caption: Localizar:

Caixa de Texto
(Name): txtLocalizar

Caixa de Seleção
(Name): chkCelulaInteira
caption: Coincidir Conteúdo da Célula Inteira

Botão de opção 1
(Name): cmdLocalizar
Caption: Localizar

Botão de opção 2
(Name): cmdCancel
Caption: Cancelar

Propriedades do formulário
(Name): frmLocalizar
Caption: Localizar

Certo, agora vamos ao código com direito a tratamento de erro e tudo.

De dois cliques no botão “localizar”, para começar a inserir o código.

A lógica é simples, quando o formulário é carregado o usuário insere um texto na caixa de texto e clica no botão localizar, é necessário que as células nas quais se quer fazer a busca estejam selecionadas, caso contrário não encontrará nada.

Quando o botão localizar é clicado, é preciso pegar o valor que estiver escrito na caixa de texto, e procurar na planilha, quando encontrar precisa ativar a célula. Caso não ache, ele precisa mostrar uma mensagem, avisando o usuário de que o valor não foi encontrado na seleção. É preciso também considerar o fato de que o usuário possa não colocar nenhum conteúdo na caixa de texto, e clique no botão localizar, nesse caso, precisamos tratar a situação e exibir uma mensagem de erro.

Vamos lá?

Primeiro vamos criar uma variável, para armazenar o conteúdo da caixa de texto.

Vamos chamá-la de varLocalizar,e ela vai ser uma variável do tipo variant, para que possa possuir também valores do tipo data.
 Dim varLocalizar As Variant 
Vamos tratar o erro caso o texto procurado pelo usuário não seja localizado, vamos fazer assim:
     On Error GoTo Erro:
Erro:
MsgBox "A Expressão não Pôde Ser Localizada"
Pronto, vamos agora supor que o usuário não coloque nada na caixa de texto e clique no botão localizar, vamos exibir uma mensagem de texto avisando que a caixa de texto localizar não pode ficar vazia.

Entre as linhas “On error goto erro: “ e “Erro” escreva o seguinte código:

     If txtlocalizar.Text = "" Then
Me.Hide
MsgBox "Digite a expressão a ser Localizada", vbCritical
Me.Show
'muda o foco para a caixa te texto
txtlocalizar.SetFocus
Exit Sub
End If
fácil não é mesmo, mas para garantir eu vou explicar o que cada linha faz.
     If txtlocalizar.Text = "" Then
Se a caixa de texto estiver vazia
         Me.Hide
Esconde o nosso formulário (fica mais bonito do que uma mensagem sobre o nosso formulário, mas é só perfumaria, você não precisa colocar essa linha se você não quiser).
         MsgBox "Digite a expressão a ser Localizada", vbCritical
Msgbox mostra a mensagem que nós colocamos entre aspas na tela, o vbCritical, diz que o formato da mensagem é uma mensagem de erro.
        Me.Show
Como nós escondemos o formulário, com o me.hide, agora nós voltamos a mostrar o formulário.
         txtlocalizar.SetFocus
txtlocalizar.setfocus é outra perfumaria, ela faz com que o foco fique na caixa de texto quando o formulário volta a ser exibido, isso faz com que o formulário voltando a aparecer já permita ao usuário escrever a nova expressão a ser localizada, sem a necessidade de clicar na caixa de texto antes.
         Exit Sub
Exit sub sai da rotina e volta para o formulário, sem executar o restante do código

End IF, fecha o IF que nós abrimos para ver se a caixa de texto não estava vazia.

Agora nós já sabemos se a caixa de texto tem alguma coisa para ser procurada ou não, então vamos gravar o conteúdo da caixa de texto, na variável strLocalizar. Para fazer isso basta colocar o seguinte código logo embaixo do end IF.

 varLocalizar = txtlocalizar.Text 
Agora precisamos verificar se o conteúdo da caixa de texto não é uma data caso seja uma data precisamos converter o valor que na caixa de texto é texto para data dentro da variável.
    If IsDate(varLocalizar) = True Then
varLocalizar = CDate(varLocalizar)
End If

Pronto, agora podemos começar a procurar o texto na seleção. Mas antes, precisamos ver se a caixa de checagem não está marcada, porque se estiver marcada, então precisamos procurar a expressão exata dentro da célula e não apenas parte dela, além disso precisamos verificar se o conteúdo da caixa de texto não é uma data, porque se for uma data ela precisa ser convertida internamente em nosso programa para uma data, caso contrário o nosso programa não vai conseguir localizar.

Para isso colocamos as seguintes linhas, depois eu explico parte a parte.
     varLocalizar = txtlocalizar.Text
If IsDate(varLocalizar) = True Then
varLocalizar = CDate(varLocalizar)
End If

'se a caixa de coincidir célula inteira estiver marcada
If ChkCelulaInteira.Value = True Then
'procura a expressão exata
Selection.Find(what:=varLocalizar, after:=ActiveCell, lookat:=xlWhole).Activate

Else
'caso contrário, procura por partes da célula
Selection.Find(what:=varLocalizar, after:=ActiveCell, lookat:=xlPart).Activate
End If
'sai do código
Exit Sub

Vamos às explicações,

O código acima verifica se o conteúdo da caixa de texto corresponde à uma data, se corresponder à data, então o texto é convertido em data "(cDate( varlocalizar)". Em seguida checa se a caixa de checagem está marcada, se estiver, ele procura a expressão exata se não estiver marcada, então ele procura por qualquer parte nas células. as linhas que fazem isso são muito parecidas, o que muda é apenas uma "palavra".

Proura a expressão exata:
         Selection.Find(what:=varLocalizar, after:=ActiveCell, lookat:=xlWhole).Activate 
Procura a por partes nas células:
        Selection.Find(what:=varLocalizar, after:=ActiveCell, lookat:=xlPart).Activate
Agora colocamos um exit sub, para evitar que a mensagem do tratamento de erro não seja exibida desnecessariamente.

O código completo (inclusive com todos os comentários) fica assim:

 Private Sub cmdLocalizar_Click()
Dim varLocalizar As Variant
'caso não encontre a expressão a ser localizada
'trata o erro
On Error GoTo Erro:
'checa se a caixa de texto não está vazia
If txtlocalizar.Text = "" Then
Me.Hide
MsgBox "Digite a expressão a ser Localizada", vbCritical
Me.Show
'muda o foco para a caixa te texto
txtlocalizar.SetFocus
Exit Sub
End If
'pega o valor da caixa de texto e armazena numa varável
varLocalizar = txtlocalizar.Text
If IsDate(varLocalizar) = True Then
varLocalizar = CDate(varLocalizar)
End If

'se a caixa de coincidir célula inteira estiver marcada
If ChkCelulaInteira.Value = True Then
'procura a expressão exata
Selection.Find(what:=varLocalizar, after:=ActiveCell, lookat:=xlWhole).Activate

Else
'caso contrário, procura por partes da célula
Selection.Find(what:=varLocalizar, after:=ActiveCell, lookat:=xlPart).Activate
End If
'sai do código
Exit Sub
Erro:
'se não achar, exibe a mensagem
MsgBox "A Expressão não Pôde Ser Localizada"
End Sub
Pronto, já podemos localizar dados na nossa planilha, lembre-se no entanto que o nosso código só procura nas células selecionadas.

A programação do botão cancelar é muito simples, veja:

 Private Sub CmdCancel_Click()
'exconde o formulário
Me.Hide
'descarrega o formulário
Unload Me
End Sub
Para colocar esse código no botão, de dois cliques no botão cancelar e escreva o código.

Vamos adicionar um módulo ao nosso projeto para chamar o nosso formulário, isso é importante, principalmente se quisermos criar teclas de atalho para executar a nossa macro(falaremos sobre isso uma outra hora).

Na Janela do projeto, no Editor do VBA, clique com o botão direito sobre a planilha que estamos trabalhando, e clique em inserir módulo.

Um módulo padrão chamado Módulo1 será adicionado ao projeto.

Dentro desse módulo vamos criar o código que vai chamar o formulário frmlocalizar.

Sub CarregaForm()
'carrega o frmLocalizar
frmLocalizar.Show
End Sub
Se você executar esse código vai notar que ele carrega o formulário...

Um grande abraço a todos, e se tiverem alguma dúvida, não deixem de me escrever... críticas também são bem-vindas.

quinta-feira, 22 de novembro de 2007

Interface de Desenvolvimento do VBA (VBE – Visual Basic Editor)

Antes de começar a escrever códigos em VBA é importante que você conheça a interface de desenvolvimento do VBA, para acessar O VBE clique em “Desenvolvedor” e depois clique no primeiro botão (Visual Basic) ou pressione simultaneamente as teclas Alt e F11.

Note que o VBE possui 3 painéis distintos, Projeto, Propriedades e a área de codificação.

Projeto

Nesse painel você pode navegar por todos os elementos do projeto, tais como, formulários, módulos classes, etc. Observe que o VBA considera cada planilha aberta um projeto, na imagem nós temos uma planilha aberta (Pasta1) e a planilha pessoal de macros (Personal.xlsb).

Por padrão o VBE agrupa objetos semelhantes dentro de pastas, dependendo do projeto você pode mais de quatro grupos de objetos associados ao projeto.

Microsoft Excel Objetos: Toda planilha numa pasta de trabalho é considerado um objeto. Um objeto chamado EstaPasta_de_Trabalho representa a pasta em que estamos trabalhando.

Formulários: A pasta formulários armazena os formulários adicionados ao projeto.

Módulos: Um módulo é um container que armazena os procedimentos que você escreve. Antes de começar a escrever os códigos você começa inserindo um módulo.

Módulos de Classe: Módulos de classe são um tipo especial de módulo que permitem que você crie os seus próprios objetos.

Você também deve ter notado que canto superior esquerdo do painel Projeto existem 3 botões: Exibir código, Exibir Objeto e alternar pastas.

O botão exibir código exibe o código relacionado ao objeto selecionado no painel de projetos.

O botão Exibir objeto exibe o objeto selecionado, por exemplo se você selecionar uma planilha e no painel do Projeto e clicar em ver objeto você vai ser levado automaticamente para aquela planilha

O botão Alternar Pastas altera a maneira como os objetos são apresentados na janela do projeto, se agrupados em pastas, ou não.

Uma coisa importante o painel de projeto e que nem todo mundo sabe, é que você pode arrastar Formulários, módulos e classes entre projetos isso não move o objeto para outro projeto ele apenas faz uma cópia do objeto no projeto para onde o objeto foi arrastado.

Isso faz com que você economize muito tempo principalmente se você estiver desenvolvendo um projeto com uma grande quantidade código.

Propriedades

No painel de propriedades você pode alterar uma série de propriedades dos objetos ou formulários. Esse painel muda de contexto de acordo com o objeto selecionado no painel projeto ou enquanto você desenha um formulário o painel de propriedades exibe as propriedades relacionados com o objeto que você está desenhando no Formulário.

Código

A área maior é onde você vai escrever seus códigos ou criar seus formulários, não tenho muito a dizer sobre ela agora, mas você vai utilizá-la e muito, em breve.

Se você ainda não sabe como inserir formulários,

módulos nos seus projetos do VBA fique tranqüilo, aos poucos você vai aprender, é bem intuitivo, por enquanto explore a janela do VBE. Mais pra frente falaremos sobre lógica de programação, boas técnicas de programação e faremos alguns códigos.

sábado, 20 de outubro de 2007

VBA mas do que se trata?

Embora o Excel seja uma ferramenta extremamente poderosa, existem situações onde os recursos do Excel são insuficientes ou muito complicados para resolver os problemas do dia a dia, nesses casos precisamos utilizar recursos mais avançados como macros e programação. A linguagem de programação utilizada na suíte de aplicativos Office é o VBA (Visual Basic For Application).

Como o nome sugere, o VBA é uma linguagem de programação baseada no Visual Basic, se você já é um programador, não vai encontrar dificuldade alguma em aplicar a lógica de programação ao Excel, se você nunca programou antes, não vai encontrar dificuldades em aprender VBA, é uma linguagem muito fácil, por ter uma sintaxe muito próxima do inglês.

A principal utilidade de uma macro é tornar tarefas repetitivas menos enfadonhas, por exemplo, se você precisa sempre aplicar uma série de formatações em uma célula ou grupos de células, como fonte Arial, negrito, tamanho 16 na cor verde, pode ser interessante gravar uma macro para fazer essa tarefa; desse modo toda vez que você precisar aplicar essas formatações, você apenas executará um comando, e isso é muito fácil de fazer, simplesmente gravando os passos.

Objetivo desse blog não é ensinar você a gravar macros, e sim utilizar o máximo que o Excel pode oferecer através da programação, vamos falar sobre boas práticas de programação, linguagem POG (programação orientada a Gambiarra) falaremos sobre a interface e veremos muitos exemplos de código (com a graça de Deus eu vou conseguir disponibilizar isso tudo), focados no Excel 2007.

Os procedimentos e o código utilizado nas macros desse blog funcionarão, com algumas ressalvas em versões mais antigas do Office, com um pouco de pesquisa e adaptação você vai conseguir utilizar essas preciosidades em qualquer versão do Excel, mas lembre-se que as funções não serão testadas em versões anteriores à 2007.

Lembre-se sempre de utilizar os códigos e funções por sua própria conta e risco. Eu não me responsabilizo por qualquer dano, material, intelectual, ou físico, causado pela utilização dos textos desse blog.

Vou tentar a cada semana colocar algo novo, para vossa degustação, semana que vem falaremos sobre a interface e suas características. Então até a semana que vem.

José Alves

Técnico Informática
Venda de Computdores
Revista Eletronica

quinta-feira, 26 de julho de 2007

programe eventos para serem executados de tempos em tempos

Introdução:

o método OnTime, possui parâmetros que recebem uma data e hora especificada e qual procedimento deve ser executado. é bom lembrar que você não está especificando uma data e hora para executar um procedimento, então essa data e hora não pode ser menor que a data e hora atual.

execução:
abra o excel, e acesse a interface do VBA, insira um novo módulo ou abra o módulo no qual você deseja inserir o código.

declare as seguinte variáveis publicas e em seguida o procedimento (sub ou function) usarei uma
sub para efeito de apredizagem.
Public ExecQuando As Double Public Const cExecIntervaloSegundos = 20 'executa a cada 20 segundos Public Const cProcedimento = "Mensagem" 'porcedimento que deve ser executado



vamos criar um procedimento para iniciar o timer
Sub IniciaTimer() ExecQuando = Now + TimeSerial(0, 0, cExecIntervaloSegundos) Application.OnTime earliesttime:=ExecQuando, procedure:=cProcedimento, _ schedule:=True End Sub




agora vamos criar o procedimento que será chamado.

Sub mensagem()
MsgBox "Esta mensagem aparece a cada " & cExecIntervaloSegundos & " Segundos"
'agenda o procedimento novamente
IniciaTimer
End Sub






caso voce precise parar o timer pode utilizar a sub a seguir

Sub ParaTimer()
On Error Resume Next
Application.OnTime earliesttime:=ExecQuando, procedure:=cProcedimento, schedule:=False
End Sub





agora é só salvar e sair usando, não esqueça que no office 2007 as planilhas com macros devem ser salvas em formato .XLSM (Pasta de trabalho habilitada para macro)

caso esteja interessado na planilha, por favor, entre em contato...

até o próximo Post...

José Alves
Técnico Informática
www.vendadecomputadores.com