terça-feira, 26 de fevereiro de 2013

Codificando "Agenda" Parte 2 -Criando código automático

Código VBA para geração de códigos numéricos sucessivos e crescentes

Então vamos lá...

O primeiro passo é criar um Módulo...

            Vamos então abrir o Editor do VBA, quem não souber pode visitar os posts anteriores.


em seguida clicamos no botão embaixo do menu "Arquivo", mostrado na imagem acima, irá surgir um menu pequeno, sendo que nesse devemos escolher a opção "Módulo" será criado um novo módulo com o nome "Módulo1" que é padrão do Excel...


Vejam o módulo já criado... na imagem acima...


Pois bem na área branca que surge na tela com a criação do Módulo1 é onde iremos escrever os códigos que irão programar o nosso projeto.



O código a seguir trata-se de um código muito útil,,, pois é ele quem irá numerar todos os nossos registros não permitindo que o  código seja duplicado e sempre gerando um com a soma do ultimo gerado...




Function CODIGO()
    Dim BANCO As Database
    Dim TABELA As Recordset
        Set BANCO = OpenDatabase(ThisWorkbook.Path & "/" & ThisWorkbook.Name, False, False, "EXCEL 8.0")
        Set TABELA = BANCO.OpenRecordset("AGENDA$")
    If TABELA.EOF And TABELA.BOF Then
        Agenda.numero.Text = 1
    Else
        TABELA.MoveLast
       Agenda.numero.Text = Format(TABELA("NUMERO") + 1)
    End If
End Function


Explicando cada linha do código


Function CODIGO() = Criando a função (sendo que o nome da mesma é "CODIGO"



    Dim BANCO As Database =       Dim (Declara uma variável) BANCO (é o nome da variável) As (será de qual tipo?) Database (difine o Tipo da variável como Banco de Dados)



    Dim TABELA As Recordset  = Dim (Declara uma variável) TABELA (é o nome da variável) As (será de qual tipo?) Recordset  (difine o Tipo da variável como Tabela de Registtros)



        Set BANCO = OpenDatabase(ThisWorkbook.Path & "/" & ThisWorkbook.Name, False, False, "EXCEL 8.0")

A linha acima define automaticamente o nome da pasta de trabalho que esta em uso, assim como qual pasta ela se encontra.



        Set TABELA = BANCO.OpenRecordset("AGENDA$")

A linha acima define qual será a planilha (veja imagem abaixo) utilizada, no caso "AGENDA" que tem que ser escrito dentro das aspas e o cifrão antes da aspas que fecha.





Aqui vamos fazer uma condição "se"

    If TABELA.EOF And TABELA.BOF Then

if = inicio do bloco "se"

TABELA.EOF And TABELA.BOF = tabela for vazia

Then  = faça

        Agenda.numero.Text = 1  Agenda = nome do formulário, numero = nome do objeto, Text = propriedade onde irá aparecer o código.


    Else = se não for vazia a tabela


        TABELA.MoveLast   = mover-se para o ultima linha vazia


       Agenda.numero.Text = Format(TABELA("NUMERO") + 1)

A linha acima diz o seguinte: vai colocar no formulário de nome "Agenda" dentro do objeto de nome "numero" na propriedade "Text" o valor que estiver no banco de dados gravado na ultima linha e vai acrescentar 1 a esse valor.


    End If   =  fim do bloco is "se"


End Function  = fim da function "função"



Colocando o código para funcionar

Pronto o código está feito e explicado, agora vamos chamar ele no formulário no evento "initialize" para que quando o mesmo for iniciado automaticamente ele já puxe o código correto.

Para isso vamos dar 2 cliques sobre o formulário para abrira janela de codificação do mesmo...


feito isso o código é o seguinte



Private Sub UserForm_initialize()
    Módulo1.CODIGO
End Sub


1ª  linha cria uma rotina dentro do formulário no evento Initialize

2ª  chama dentro do Módulo1 a função de nome CODIGO

3 ª finaliza a rotina...


Bom é isso aí, após rodarmos o programa como não temos nenhum registro ainda o código gerado deve ser 1, e irá aparecer dentro da caixa de texto Numero....



Dúvidas deixem comentários...

Edivan Cabral



Nenhum comentário:

Postar um comentário