VBA – Modelo De Cadastro de Cheque

Salve Galera.

Como prometido, aqui esta um dos meus modelos completos para que todos possam conhecer um pouco mais do meu trabalho em VBA.

Cadastro simples para cheques. Vamos Botar As  Mãos No Código.

Dessa vez vou deixar sem descrever os textboxs e os label, então, espero que todos adaptem o código às suas necessidades. São ao todo:

  • 11 TextBoxs
  • 01 ComboBox
  • 07 Botões de comando

O restante é com vocês, detalhe: vou comentar para que todos possam entender cada parte do código.

Código:

' Ai vai o código, não se assustem galera, faz parte mesmo.Dim registros As Integer
' Aqui a variavel global
 
Dim registros As Integer
 
' Aqui esta o comando responsavel por buscar as informações
 
Private Sub Command_buscar_Click()
    'Verificar se foi digitado um nome na primeira caixa de texto
 
    If Text_codigo.Text = "" Then
        MsgBox ("Digite Um Codigo Válido"), vbInformation, ("Sistema Live - Free")
 
        Text_codigo.SetFocus
        GoTo Linha1
    End If
 
    With Worksheets("Cartao").Range("A:A")
        Set c = .Find(Text_codigo.Value, LookIn:=xlValues, LookAt:=xlPart)
        If Not c Is Nothing Then
 
            'Repare na localização e os nomes dos textboxs abaixo
 
            Text_codigo.Value = c.Value
 
            Text_nome.Value = c.Offset(0, 1).Value
            Text_cpf.Value = c.Offset(0, 2).Value
            Text_rg.Value = c.Offset(0, 3).Value
 
            Text_agencia.Value = c.Offset(0, 4).Value
            Combo_banco.Value = c.Offset(0, 5).Value
            Text_conta.Value = c.Offset(0, 6).Value
            Text_digito.Value = c.Offset(0, 7).Value
 
            Text_de.Value = c.Offset(0, 8).Value
            Text_ate.Value = c.Offset(0, 9).Value
            Text_tempocc.Value = c.Offset(0, 10).Value
            Text_situacao.Value = c.Offset(0, 11).Value
 
        Else
            MsgBox ("Este Cadastro Não Foi Localizado!!"), vbInformation, ("Sistema Live - Free")
 
            Text_codigo.SetFocus
        End If
    End With
Linha1:
End Sub
 
' Aqui o comando Cadastrar
 
Private Sub Command_cadastrar_Click()
 
    'Resposta sim e não - tomada de decisão, lembram?
 
    Dim Reposta As String
    Reposta = MsgBox("Deseja Cadastrar Os Dados Agora?", vbYesNo, "Sistema Live - Free")
    If Reposta = vbYes Then
 
        ' Nome da pasta onde sera gravado os dados
 
        Registro = Worksheets("Cartao").UsedRange.Rows.Count + 1
 
        ' Primeira Parte do codigo, neste exemplo usei a plan14, no seu caso basta mudar para o numero da sua
        ' plan que vc renomeiou para (Cartao) seu o (~)
        'Repare que os textboxs mudam de posição a cada linha e ação desejada
 
        Plan14.Cells(Registro, 1) = Me.Text_codigo
        Plan14.Cells(Registro, 2) = Me.Text_nome
        Plan14.Cells(Registro, 3) = Me.Text_cpf
        Plan14.Cells(Registro, 4) = Me.Text_rg
 
        Plan14.Cells(Registro, 5) = Me.Text_agencia
        Plan14.Cells(Registro, 6) = Me.Combo_banco
        Plan14.Cells(Registro, 7) = Me.Text_conta
        Plan14.Cells(Registro, 8) = Me.Text_digito
 
        Plan14.Cells(Registro, 9) = Me.Text_de
        Plan14.Cells(Registro, 10) = Me.Text_ate
        Plan14.Cells(Registro, 11) = Me.Text_tempocc
        Plan14.Cells(Registro, 12) = Me.Text_situacao
 
        ' Aqui um segredo, o auto ajuste das colunas na gravação de dados
 
        Plan14.Range(Columns(2), Columns(12)).AutoFit
 
        MsgBox ("Cadastro Efetuado Com Sucesso!"), vbInformation, ("Sistema Live - Free")
 
        'Limpando os textos digitados
 
        Me.Text_codigo.Text = ""
        Me.Text_nome.Text = ""
        Me.Text_cpf.Text = ""
        Me.Text_rg.Text = ""
 
        Me.Text_agencia.Text = ""
        Me.Combo_banco.Text = ""
        Me.Text_conta.Text = ""
        Me.Text_digito.Text = ""
 
        Me.Text_de.Text = ""
        Me.Text_ate.Text = ""
        Me.Text_tempocc.Text = ""
        Me.Text_situacao.Text = ""
 
        Me.Text_nome.SetFocus
 
    End If
 
    ' Resposta não - tomada de decisão
 
    If Reposta = vbNo Then
 
        Me.Text_codigo.Text = ""
        Me.Text_nome.Text = ""
        Me.Text_cpf.Text = ""
        Me.Text_rg.Text = ""
 
        Me.Text_agencia.Text = ""
        Me.Combo_banco.Text = ""
        Me.Text_conta.Text = ""
        Me.Text_digito.Text = ""
 
        Me.Text_de.Text = ""
        Me.Text_ate.Text = ""
        Me.Text_tempocc.Text = ""
        Me.Text_situacao.Text = ""
 
        Me.Text_nome.SetFocus
 
        MsgBox ("Seus Dados Não Foram Gravados"), vbInformation, ("Sistema Live - Free")
    End If
 
    Me.Command_cadastrar.Enabled = False
 
End Sub
 
' Aqui esta o comando editar, tão procurado e desejado no mundo VBA
 
Private Sub Command_editar_Click()
 
    ' Tomada de decisão
 
    Dim Reposta As String
    Reposta = MsgBox("Deseja Realmente Editar Agora?", vbYesNo, "Sistema Live - Free")
 
    If Reposta = vbYes Then
 
        Registro = Me.Text_codigo.Text
 
        ' Segunda Parte
 
        Plan14.Cells(Registro, 1) = Me.Text_codigo
        Plan14.Cells(Registro, 2) = Me.Text_nome
        Plan14.Cells(Registro, 3) = Me.Text_cpf
        Plan14.Cells(Registro, 4) = Me.Text_rg
 
        Plan14.Cells(Registro, 5) = Me.Text_agencia
        Plan14.Cells(Registro, 6) = Me.Combo_banco
        Plan14.Cells(Registro, 7) = Me.Text_conta
        Plan14.Cells(Registro, 8) = Me.Text_digito
 
        Plan14.Cells(Registro, 9) = Me.Text_de
        Plan14.Cells(Registro, 10) = Me.Text_ate
        Plan14.Cells(Registro, 11) = Me.Text_tempocc
        Plan14.Cells(Registro, 12) = Me.Text_situacao
 
        MsgBox ("Dados Editados Com Sucesso!"), vbInformation, ("Sistema Live - Free")
 
        Me.Text_codigo.Text = ""
        Me.Text_nome.Text = ""
        Me.Text_cpf.Text = ""
        Me.Text_rg.Text = ""
 
        Me.Text_agencia.Text = ""
        Me.Combo_banco.Text = ""
        Me.Text_conta.Text = ""
        Me.Text_digito.Text = ""
 
        Me.Text_de.Text = ""
        Me.Text_ate.Text = ""
        Me.Text_tempocc.Text = ""
        Me.Text_situacao.Text = ""
 
        Me.Text_nome.SetFocus
 
    End If
 
    ' Resposta não- tomada de decisão
    If Reposta = vbNo Then
 
        Me.Text_codigo.Text = ""
        Me.Text_nome.Text = ""
        Me.Text_cpf.Text = ""
        Me.Text_rg.Text = ""
 
        Me.Text_agencia.Text = ""
        Me.Combo_banco.Text = ""
        Me.Text_conta.Text = ""
        Me.Text_digito.Text = ""
 
        Me.Text_de.Text = ""
        Me.Text_ate.Text = ""
        Me.Text_tempocc.Text = ""
        Me.Text_situacao.Text = ""
 
        Me.Text_nome.SetFocus
 
        MsgBox ("Seus Dados Não Foram Editados E Não Foram Cadastrados!"), vbInformation, ("Sistema Live - Free")
    End If
 
End Sub
 
' Aqui está o comando excluir - Aeeeeeeeeeeee Laiaaaaaaaaaaa............
 
Private Sub Command_excluir_Click()
 
    ' Tomada de decisão
 
    Dim Reposta As String
 
    Reposta = MsgBox("Deseja Realmente Excluir O Registro Informado?", vbYesNo, "Sistema Live - Free")
 
    If Reposta = vbYes Then
 
    ' Lembre - se de mudar a plan aqui tambem
 
    Plan14.Range("A" & Me.Text_codigo).EntireRow.Delete
 
    MsgBox ("Dados Excluidos Com Sucesso Do Sistema!"), vbInformation, ("Sistema Live - Free")
    End If
 
    If Reposta = vbNo Then
 
    MsgBox ("Seus Dados Não Foram Excluidos!"), vbInformation, ("Sistema Live - Free")
 
    Me.Text_codigo.Text = ""
    Me.Text_nome.Text = ""
    Me.Text_cpf.Text = ""
    Me.Text_rg.Text = ""
 
    Me.Text_agencia.Text = ""
    Me.Combo_banco.Text = ""
    Me.Text_conta.Text = ""
    Me.Text_digito.Text = ""
 
    Me.Text_de.Text = ""
    Me.Text_ate.Text = ""
    Me.Text_tempocc.Text = ""
    Me.Text_situacao.Text = ""
 
    Me.Text_nome.SetFocus
 
    End If
 
End Sub
 
' Comando Limpar os dados
 
Private Sub Command_limpar_Click()
 
    Me.Text_codigo.Text = ""
    Me.Text_nome.Text = ""
    Me.Text_cpf.Text = ""
    Me.Text_rg.Text = ""
 
    Me.Text_agencia.Text = ""
    Me.Combo_banco.Text = ""
    Me.Text_conta.Text = ""
    Me.Text_digito.Text = ""
 
    Me.Text_de.Text = ""
    Me.Text_ate.Text = ""
    Me.Text_tempocc.Text = ""
    Me.Text_situacao.Text = ""
 
    Me.Text_nome.SetFocus
 
End Sub
 
' Habilitar o botão novo cadastro - Ufa já tamo acabando galera, paciência ai e muita calma nessa hora.
 
Private Sub Command_novo_Click()
    Me.Command_cadastrar.Enabled = True
 
    Me.Text_codigo.Text = ""
    Me.Text_nome.Text = ""
    Me.Text_cpf.Text = ""
    Me.Text_rg.Text = ""
 
    Me.Text_agencia.Text = ""
    Me.Combo_banco.Text = ""
    Me.Text_conta.Text = ""
    Me.Text_digito.Text = ""
 
    Me.Text_de.Text = ""
    Me.Text_ate.Text = ""
    Me.Text_tempocc.Text = ""
    Me.Text_situacao.Text = ""
 
    ' Sua pasta que recebera os dados
 
    Registro = Worksheets("Cartao").UsedRange.Rows.Count + 1
 
    Me.Text_codigo = Registro
 
    Me.Text_nome.SetFocus
End Sub
 
Private Sub Command_sair_Click()
    Unload Me
End Sub
 
' Aqui o campo CPF - olha que coisa fera!
 
Private Sub Text_cpf_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    'Limita a Qde de caracteres
    Text_cpf.MaxLength = 14
 
    Select Case KeyAscii
    Case 8, 48 To 57 ' BackSpace e numericos
    If Len(Text_cpf) = 3 Or Len(Text_cpf) = 12 Then
        Text_cpf.Text = Text_cpf.Text & "."
        SendKeys "{End}", False
 
    ElseIf Len(Text_cpf) = 7 Then
        Text_cpf.Text = Text_cpf.Text & "."
 
    ElseIf Len(Text_cpf) = 11 Then
        Text_cpf.Text = Text_cpf.Text & "-"
        SendKeys "{End}", False
    End If
 
    Case Else ' o resto é travado
        KeyAscii = 0
    End Select
End Sub
 
' Letra sempra maiuscula no nome - UHUUUUUUUUUUUUUU!
 
Private Sub Text_nome_Change()
    Text_nome.Value = UCase(Text_nome.Value)
End Sub
 
Private Sub Text_situacao_Change()
    Text_situacao.Value = UCase(Text_situacao.Value)
End Sub
 
' Than Than, por fim o combo que carrega os bancos, Fera demais galera...
 
Private Sub UserForm_Initialize()
 
    ' Bancos
    Combo_banco.AddItem "Banco Do Brasil"
    Combo_banco.AddItem "Caixa Economica Federal"
    Combo_banco.AddItem "Bradesco"
    Combo_banco.AddItem "Itau"
    Combo_banco.AddItem "Bamerindus"
    Combo_banco.AddItem "Santander"
    Combo_banco.AddItem "Banco Real"
    Combo_banco.AddItem "Citibank Brasil"
    Combo_banco.AddItem "Banco Mercantil Do Brasil"
    Combo_banco.AddItem "Outro..."
 
    ' Aqui onde se inicia ao iniciar o form
 
    Me.Text_nome.SetFocus
End Sub

Ufa! Quanta novidade! Espero que todos gostem e estou sempre a disposição pra ajudar a todos.

Agradeço também pela paciência de vocês em lerem meus posts e rirem um pouco das brincadeiras. Até nosso proximo post.

Abração a todos

Top 10 Estruturas de Controle no Excel VBA

estrutura-dados
De pronto, adorei a iniciativa e por isso decidi replicar aqui. O site Dummies, aquele que publica a série for Dummies, no português traduzido “para Leigos”, publicou recentemente uma lista das estruturas de controle mais utilizadas no Excel VBA, familiar de todos aqui.

Abaixo segua a lista com exemplos, extraída do post original. Serve como revisão e até um guia de referência:

For – Next

Útil para passar por todos os itens de um Array.

ArraySum = 0
For i = 1 To 10
    ArraySum = ArraySum + MyArray(i)
Next i

For Each – Next

Perfeito para coleções, como um Range de células.

SelectionSum = 0
For Each cell In Selection
    SelectionSum = SelectionSum + cell.Value
Next cell

Do – Loop Until

Para iterar até atingir uma condição. Ótimo para casos de chegar até um limite ainda não conhecido.

Row = 0
Do
    Row = Row + 1
Loop Until Cells(Row, 1).Value = ""
MsgBox "First empty cell is in Row " & Row

Do While – Loop

Semelhando ao anterior, porém, aqui você executa a iteração enquanto uma condição se mantém.

Row = 1
Do While Cells(Row, 1) <> ""
    Row = Row + 1
Loop
MsgBox "First empty cell is in Row " & Row

If – Then

O básico, o testes dos testes! Executar uma ação baseado em uma condição numa simples linha.

If x = 1 Then y = 1

If – Then – End If

Complementando o anterior, quando a ação a ser tomada é mais complexa, é preciso deixá-la um pouco mais completa.

If x = 1 Then
    y = 1
    z = 1
End If

If – Then – Else

E continuando, se o de cima é a parte, eis a contra parte. Se o teste der certo, faça isso. OU, faça aquilo, lembrando sempre do OU, que podem ser vários!

If x = 1 Then y = 1 Else y = 0

If – Then – Else – End If

Do something if a condition is true; otherwise, do something else. Can use multiple statements.

If x = 1 Then
    y = 1
    Z = 1
Else
    y = 0
    Z = 0
End If

Select Case

Quandos as opções são conhecidas (exemplo, dias da semana), torna a leitura mais legível para o programador.

Select Case x
    Case 1
        y = 1
        Z = 1
    Case Is > 1
        y = 2
        Z = 2
    Case Else
        y = 0
        Z = 0
End Select

Goto

Esse dá medo, mas é útil. A instrução Goto te leva a um bloco de código definido. É mais utilizado para tratamento de erros, como no exemplo.

On Error GoTo Oops
'[um montão de código aqui]
Exit Sub
Oops:
MsgBox "Aconteceu um erro!!".

Eis o resumão. Pelo menos para mim foi muito bom!

O post original pode ser visto aqui:

http://www.dummies.com/how-to/content/top-ten-excel-vba-control-structures.html

O autor é John Walkenbach e o conteúdo é do livro Excel VBA Programming For Dummies, 3rd Edition:

Excel VBA Programming For Dummies, 3rd Edition
Excel VBA Programming For Dummies, 3rd Edition

Que também ter versão em português!

http://www.livrariasaraiva.com.br/produto/3419556/programando-o-excel-2007-vba-para-leigos

Bom proveito!

Blog – Os top 20 posts de 2012

Top 20 do Blog

E aqui vamos nós. Tarda, mas não falha.

O post passado já havia sido um resumo do 2012, com justos agradecimentos. Mas mais justo ainda é dar detalhes a vocês sobre como foi a temperatura do blog em 2012. Repetindo, foi um ano ótimo, como você confere na tabela abaixo.

Acessos de 02/01/2012 até 02/01/2013

Título Visualizações
Página inicial / Arquivos More stats 162.832
Planilhas de Controle Financeiro no Excel More stats 90.552
Modelos Prontos More stats 65.391
Modelos – Planilha de Banco de Dados no Excel More stats 56.801
Excel – Modelos de Folha de Pagamento More stats 49.350
Excel – Crie uma planilha de gastos mensais personalizada More stats 31.914
Segurança – Quebrando senhas de projetos VBA do Microsoft Office More stats 15.305
VBA – Emitindo mensagens personalizadas com MsgBox More stats 14.802
Excel – Controle Financeiro 2010 More stats 14.636
Excel – Modelo de Agenda de Telefones em VBA More stats 12.799
Modelos Prontos – Módulo de Orçamento em Excel VBA More stats 12.128
Excel – Planilha ajuda em compras no mercado More stats 11.713
Controle de Estoque no Excel More stats 11.662
Unindo dados de duas ou mais planilhas no Excel More stats 11.181
VBA – Criando um Formulário de Cadastro Passo a Passo More stats 10.794
Excel – Somando Meses com a função DATA() More stats 10.557
Excel VBA – Escrevendo números por extenso More stats 10.501
Excel – Planilha de acompanhamento de perda de peso More stats 9.196
VBA – Auto executando macros ao abrir arquivos do Office More stats 7.255
Excel – Planilhas interativas More stats 7.061

Aproveite para ver também como foi a lista dos anos anteriores:

2011

https://www.tomasvasquez.com.br/blog/tecnologia/blog-%e2%80%93-os-top-20-posts-de-2011

2010

https://www.tomasvasquez.com.br/blog/tecnologia/blog-os-top-20-posts-de-2010

E que venha 2013!

Um grande abraço!