sexta-feira, 29 de março de 2013

SOMA EM TEXTBOX

FAZER SOMA EM UM TEXTBOX COM USO DE VBA...


Para tal, vamos criar um UserForm com 2 TextBox e 1 Label...



Agora o código será da seguinte fórmula

1° vamos criar 2 variável uma para cada valor...

na prática:

Dim valor_1 As double 

Dim valor_2 As double 

2° Vamos verificar se o TextBox1 é igual a vazio se for então vamos atribuir "0" como valor para a variável "valor_1", caso não seja vamos atribuir a variável "valor_1" o mesmo valor que conter na TextBox1...

na prática:

If Me.TextBox1.Text = "" then
valor_1 = 0
Else
valor_1 = Me.TextBox1.Text
End if

3° Copiar e colar o código acima e substituir pelo objeto TextBox2 e pela variável "valor_2"...

na prática:

If Me.TextBox2.Text = "" then
valor_2 = 0
Else
valor_2 = Me.TextBox2.Text
End if

4° Agora é só dizer ao código para somar o valor das 2 variáveis e atribuir ao Label1...

na prática:

Me.Label1.Caption = valor_1 + Valor_2

Pronto agora é só chamar esse código dentro dos 2 objetos TextBox1 e 2... no evento AfterUpdate que será executado quando sair do objeto....



Dim valor_1 As double 

Dim valor_2 As double 

If Me.TextBox1.Text = "" then
valor_1 = 0
Else
valor_1 = Me.TextBox1.Text
End if

If Me.TextBox2.Text = "" then
valor_2 = 0
Else
valor_2 = Me.TextBox1.Text
End if

Me.Label1.Caption = valor_1 + Valor_2





Isso aí galera....

Agora ao executar o UserForm é só testar ....



Valeu abraços e até mais...

INSERIR LINHAS NO EXCEL PASSO A PASSO

PASSO A PASSO INSERINDO LINHAS...

Vamos inserir uma linha na tabela abaixo...


Para isso basta posicionar o mouse na canto esquerdo... o mouse assumirá a forma de uma seta apontando para a direita....







depois clicamos com o botão direito do mouse e se abrirá o seguinte menu...




Após devemos escolher a opção Inserir e pronto uma nova linha será inserida.... vejam:



isso aí té mais...

quinta-feira, 28 de março de 2013

CRIANDO TELA DE LOGIN NO EXCEL PASSO A PASSO

TELA LOGIN


Na intenção de diferenciar um  pouco o layout dos UserForms vou mostrar uma tela de login que criei aqui de exemplo.


Bom para esse post vou usar uma imagem como fundo em meu UserForm a qual eu mesmo criei no próprio Excel usando as formas disponíveis no programa...


Para começar vamos abrir o Excel e em seguida o Editor VBA...
Vamos inserir o Userform... Ao inserirmos o UserForm vamos na propriedade "Picture" e vamos escolher a imagem desejada...
   



Em seguida vamos alterar a propriedade "PictureSizeMode" para 1... assim a imagem se ajusta automaticamente ao UserForm você pode crescer  ou diminuir o tamanho de seu UserForm e a imagem o acompanhará....



Agora vamos alterar a propriedade CAPTION para "LOGIN"...



Para a digitação de "Nome" e "Senha" vamos inserir e ajustar aos tamanhos da imagem 2 caixas de textos...


Agora vamos inserir um Botão de Comando...A propriedade CAPTION será = "ENTRAR", propriedade BACKSTYLE = 0, a cor mudamos em forercolor... vamos ajustando até ficar parecido com isso....



Bom gente, queria apenas mostrar como é possível fazer o layout mais personalizado de nossos UserForm... Se você for fera no assunto de imagens kkk pode ficar super profissional os UserForm...


Abraços a todos e até a próxima...

Edivan Cabral

quarta-feira, 27 de março de 2013

CARREGAR COMBOBOX COM CÓDIGO VBA

CARREGANDO COMBOBOX



Visitem meu novo blog:

https://programacaopassoapasso.wordpress.com/





Objetivo de hoje...


Pegar uma lista de uma planilha do Excel... e carregar para uma combobox...




Passo a passo.


Primeiro devemos criar a lista que pode ser qualquer uma e em qualquer lugar. No exemplo acima fiz ela na coluna "A". 

Após isso, vamos criar os objetos 

1 UserForm...
Para isso abrimos o editor VBA com o atalho "Alt+F11" em seguida clicamos no botão Inserir UserForm:

Após inserido o formulário vou alterar a propriedade CAPTION do mesmo para CARREGANDO COMBOBOX.



1 label... para titulo do campo... e alterar a propriedade CAPTION para PRODUTOS:



1 Combobox... (seu nome padrão virá como Combobox1)



Pronto agora vamos por o seguinte código no evento Initialize do userform...


Dim linha As Integer
linha = 1
Do Until Plan1.Range("a" & linha).Value = ""
Me.ComboBox1.AddItem Plan1.Range("A" & linha).Value
linha = linha + 1
Loop

O código depois de inserido ficará assim:


Pronto agora é só executar o UserForm que serão carregadas as informações para o combobox...


Explicando o código...

Dim linha As Integer
Variável de nome linha de tipo inteiro


linha = 1
valor inicial igual a 1, afinal a partir da primeira linha da coluna já tem informações a serem carregadas...


Do Until Plan1.Range("a" & linha).Value = ""
Fazer até que o valor na coluna "A" junto com a linha seja igual a vazio

Me.ComboBox1.AddItem Plan1.Range("A" & linha).Value
adiciona ao combobox o valor da coluna "A" junto com a linha no momento da passagem...

linha = linha + 1
adiciona 1 ao valor da variável fazendo o loop continuar até encontrar a linha vazia

Loop
Volta no inicio novamente Do Until .....




Bom espero que tenham gostado...


VERIFICA SE A DATA INFORMADA É VALIDA

CÓDIGO VERIFICADOR DE DATAS VÁLIDAS


Hoje postarei um código que uso nos textbox destinados a data, para evitar possíveis erros  ao desenvolver pequenos projetos em VBA, que tem por sua vez a função de verificar se a data informada é válida ou não... 

______________________________________________________


Para esse exemplo vou criar um UserForm, 1 Label, 1 TextBox e um Botão de comando...








______________________________________________________

O código exemplo é esse basta trocar pelo seu textbox


If IsDate(Me.TextBox1.Text) = False Then
MsgBox "DATA INVÁLIDA", vbCritical, "AVISO"
Else
End If



Vlw...  até a próxima...

VERIFICAR SE É UM NUMERO....

O TEXTO DIGITADO É NUMÉRICO?

Olá, a todos estou de volta aqui no meu blog e é com grande alegria que tiro uns minutos do meu tempo para postar algo que possa ajudar a alguém que esteja precisando...

Hoje vou falar de um assunto muito interessante, as vezes temos em nossos projetos situações assim: Há um campo para números o qual as vezes pode gerar um erro caso o valor não seja valido, tipo seja um texto ou uma data talvez.

Criei um UserForm bem simples mesmo só para o exemplo aqui... vejam.



A ideia é digitar um valor qualquer e clicar no botão o qual irá dizer de é ou não numérico através de uma caixa de mensagens.



_________________________________________________
Vamos começar abrindo o editor VBA vamos na guia desenvolvedor...


____________________________________________________
Criando os objetos... a propriedade (Name) deixamos como de padrão mesmo...


______________________________________________________

Bom o código vamos por no evento Click do Botão de comando:



Private Sub CommandButton1_Click()


If TextBox1.Text = "" Then
Else
If IsNumeric(Me.TextBox1.Text) = False Then
MsgBox "Não é numérico", vbCritical
TextBox1.Text = ""
TextBox1.SetFocus
Else
MsgBox "Sim é numérico"
End If
End If


End Sub







Passo a passo do código

Private Sub CommandButton1_Click()

If TextBox1.Text = "" Then ' se o objeto TextBox1 for igual a vazio não fazer nada
Else ' se não
If IsNumeric(Me.TextBox1.Text) = False Then 'verificar se é numérico o texto digitado em TextBox1se for falso
MsgBox "Não é numérico", vbCritical 'exibir mensagem com um botão em x na cor vermelha



TextBox1.Text = "" 'limpar a caixa de texto
TextBox1.SetFocus 'levar o focu de novo para ela
Else 'já se o valor numérico for igual a verdadeiro
MsgBox "Sim é numérico" 'exibir mensagem afirmando


End If
End If


End Sub


é isso vou fazer também para data.. em outro post

Valeu galera me add no face

edcsilva35@hotmail.com

Edivan Cabral....

terça-feira, 26 de março de 2013

SEMANA INATIVA

SEMANA SEM POSTS


Bom galera essa semana final de março, não terei muito tempo disponível, assim retornarei as postagens no inicio de abril... estou preparando uma série com 4 exemplos de do until... laços de repetição pois isso é muito usado no mundo VBA....


Abraços e até semana que vem...

Edivan Cabral...

segunda-feira, 25 de março de 2013

A dúvida é ;





Trocar texto na célular , Excel?

Eu quero colocar um texto numa célula do excel, tipo assim: cc .. E o excel automaticamente trocar esse "cc" por Conclusão.
Como faço?

_________________________________________________________________________________________


Vejam o resultado obtido....


_________________________________________________________________________________________

Pois bem vamos lá eu fiz uma espécie de banco de dados onde tenho as letras que vou digitar e o que ela vai representar... fiz na plan2...



















Agora na coluna A da Plan1 eu vou digitar a abreviação e vai retornar o palavra inteira...


kkkk mais antes eu vou criar  a macro....



Private Sub Worksheet_Change(ByVal Target As Range)
    Dim colunaa As Range
    Set colunaa = Range("a1:a50")
    Dim linha As Integer
    linha = 1
    Dim linplan1 As Integer
    linplan1 = ActiveCell.Row - 1
    If linplan1 = 0 Then
    linplan1 = 1
    Else
    End If
    If Not Application.Intersect(colunaa, Range(Target.Address)) _
           Is Nothing Then
    Do Until Plan2.Range("a" & linha).Value = ""
    If Plan2.Range("a" & linha).Value = Plan1.Range("a" & linplan1).Value Then
    Plan1.Range("a" & linplan1).Value = Plan2.Range("b" & linha).Value
    Else
    linha = linha + 1
    End If
    Loop
    End If
End Sub


deve ser posta dentro da plan1...




pronto agora nas linhas 1 até 50 na coluna "A" o que você digitar de abreviação (desde que tenha pré cadastrado na plan2) será convertido para a palavra inteira...


Espero que tenha gostado...

deixe comentário com dúvidas, sugestões ou criticas...


At; Edivan Cabral...

domingo, 24 de março de 2013

ESTOQUE EM EXCEL VBA

ESTOQUE EM EXCEL VBA

Galera a fim de ensinar cada vez mais o pouco que sei... estou preparando um sistema para controle de estoque, onde ensinarei a criar a banco de dados, assim como os formulários e objetos, também os códigos necessários para a conclusão do mesmo...

Porém não tenho tempo de fazer tudo passo a passo, então peço a vocês que vão acompanhando os posts que estou fazendo com os títulos CÓDIGOS MODELOS pois lá eu fiz passo a passo cada ação...

 segue link para as postagens sobre o assunto....



PARTE I    PARTE II    PARTE III  PARTE IV


Assim que o projeto estiver pronto eu vou postar cada parte separadamente para fixar o aprendizado de vocês, mais em troca peço-lhes que me ajudem a divulgar o meu blog...

Desde já agradeço a todos e um forte abraço..

At; Edivan Cabral

sexta-feira, 22 de março de 2013

=SE(. Fórmula "SE". Na prática....

FÓRMULA DO EXCEL SE(...


Galera aqui vai mais uma  fórmula que rondou minha cabeça por um longo período...

A fórmula "SE" que faz o Excel tomar escolhas mediante aos critérios determinados pelo usuário...

______________________________________________________
Vou criar 2 condições...

CONDIÇÃO1

CONDIÇÃO2








______________________________________________________

Em seguida vou colocar a fórmula...


o início da fórmula diz o seguinte: se o valor da célula "A2" for igual a OK então fazer...



______________________________________________________
fazer o seu valor ("A3") como APROVADO...

se não fazer...









______________________________________________________
se não fazer REPROVADO...









______________________________________________________
Pronto agora vamos ver 
o resultado da fórmula 
em uso...







______________________________________________________
Agora vamos colocar
 outro "SE" para a
 condição 2...
Vamos colocar de "REPROVADO"





______________________________________________________
Então coloquei 2 condições para se ambos ou apenas um valor for igual ao critério estabelecida na escrita da fórmula o valor retornado será o descrito pelo usuário...




Espero que tenham gostado e até outra hora qualquer...


Abraços...

PESQUISA EM VBA. CÓDIGO MODELO...

CÓDIGOS MODELOS... FUNÇÃO PESQUISAR




Visitem meu novo blog:

https://programacaopassoapasso.wordpress.com/




Dando continuidade aos posts CÓDIGOS MODELOS... hoje vou ensinar a fazer o código que irá pesquisar as informações cadastradas...



Vejam o resultado esperado ao fim deste post....













Veja Links dos post relacionados a esse...

http://excelamador.blogspot.com.br/2013/03/funcao-vba-para-cadastros-parte-ii.html


Para começarmos  vou abrir 
a pasta criada nos post
anteriores e cadastrar umas 
quatro informações...


______________________________________________________

Irei inserir 1 rótulo e uma 
caixa de texto para digitarmos 
o que vamos pesquisar...

rótulo = PESQUISAR

caixa de texto = TXT_PESQUISA


_________________________________________________________________________________

Inserir também um ListBox 
que é onde serão exibidas as 
informações pesquisadas... 
vamos alterar a propriedade
 (Name) dela para
 LIST_PRODUTO...

_________________________________________________________________________________

Inserir três rótulos também 
para servir de título para o 
ListBox...

_________________________________________________________________________________
Alterar as propriedades do ListBox... 

Definir a quantidade de colunas 
e a largura de cada uma delas...

_________________________________________________________________________________
Bom o código modelo é esse vou marcar as partes que devemos atribuir os nossos objetos...



Function NOMEDAFUNÇÃO()

    Dim i As Integer
    Dim BANCO As Database
    Dim TABELA As Recordset
    Set BANCO = OpenDatabase(ThisWorkbook.Path & "/" & ThisWorkbook.Name, False, False, "EXCEL 8.0")
    
    Set TABELA = BANCO.OpenRecordset("SELECT * FROM [NOME_DA_PLANILHA$] WHERE PESQUISAR_EM_QUAL_CAMPO LIKE '" & FORMULARIO.OBJETO_DA_PESQUISA & "*';")
    
    FORMULARIO.OBJETOLISTBOX.Clear
    
    Do Until TABELA.EOF
   
    FORMULARIO.OBJETOLISTBOX.AddItem TABELA("CAMPO")
    FORMULARIO.OBJETOLISTBOX.List(i, 1) = TABELA("CAMPO")
    
    
    i = i + 1
    TABELA.MoveNext
    Loop
    BANCO.Close
End Function

_______________________________________________________________________

Bom então 
vamos copiar o 
código acima e colar 
dentro do nosso módulo...








____________________________________________________
Agora vamos alterar as 
partes marcadas no código...
Function NOMEDAFUNÇÃO()
____________________________________________________
* FROM [NOME_DA_PLANILHA$] WHERE


Vejam que esse nome é referente ao nome da nossa aba na planilha... que criamos nos post anteriores...
____________________________________________________
WHERE PESQUISAR_EM_QUAL_CAMPO LIKE


Vamos pesquisar o nome do produto então o campo da pesquisa deve ser o PRODUTO que se encontra na planilha...
____________________________________________________
LIKE '" & FORMULARIO.OBJETO_DA_PESQUISA & "*';")

Nessa parte temos que informar a partir de qual objeto o código irá buscar as informações... no caso é o objeto TXT_PESQUISAR... já o formulário é o UserForm1...
____________________________________________________
FORMULARIO.OBJETOLISTBOX.Clear
Esse código (Clear) serve para limpar o ListBox, antes de inserir os dados da pesquisa, para não inserir novamente dados repetidos...

Então
FORMULARIO = UserForm1



OBJETOLISTBOX = LIST_PRODUTO...
____________________________________________________

FORMULARIO.OBJETOLISTBOX.AddItem TABELA("CAMPO")


Aqui o formulário e o objeto listbox nós já sabemos quais são, falta dizer qual campo da planilha será pesquisa e inserido na coluna 1 do ListBox, esse campo é o NUMERO...
____________________________________________________
List(i, 1) = TABELA("CAMPO")


O numero 1 após a "," no pedaço de código acima, indica que é a segunda coluna do ListBox e temos que informar qual será o campo de onde iremos puxar as informações... 

Vamos por o segundo campo da planilha (PRODUTO)...
____________________________________________________
Como na nossa planilha temos três campos (NUMERO|PRODUTO|VALOR) irá faltar uma coluna para ser pesquisada, nesse caso vamos copiar a linha:

FORMULARIO.OBJETOLISTBOX.List(i, 1) = TABELA("CAMPO")

e a coluna vamos trocar para 2, sendo que será a terceira, já deu para perceber que o numero das colunas no ListBox começa do 0...






____________________________________________________


Agora para finalizar vamos chamar essa  função criada dentro do objeto TXT_PESQUISA...






____________________________________________________


Ainda dentro do objeto TXT_PESQUISA vamos por o código que converte tudo o que é digitado para maiúsculo... pois a pesquisa difere o formato das letras... e como o nosso cadastro será feito todo em  maiúsculo...
____________________________________________________



Vamos agora executar nosso projeto e fazer uma pesquisa...



Bom galera espero sinceramente que estejam gostando. Estou muito feliz com os comentários postados por vocês leitores. Continuem lendo e comentando que continuarei postando rsrsrsrsrs...


Abraços a todos e até a próxima postagem...

Edivan cabral....

FUNÇÃO VBA PARA CADASTROS. PARTE II


CÓDIGOS VBA MODELOS...

FUNÇÃO PARA CADASTROS. PARTE II


Bom  galera dando continuidade ao post CÓDIGOS VBA MODELOS... FUNÇÃO PARA CADASTROS, vamos abrir a pasta de trabalho que criamos e estamos usando ao decorrer dos posts...

Como prometido no post anterior vamos acrescentar a coluna VALOR em nosso banco de dados...

_____________________________________________________


Vamos também inserir mais uma Caixa de Texto em nosso formulário e dessa vez vamos alterar a propriedade (Name) dela para TXT_VALOR, a partir de agora vou começar a nomear os objetos para melhor compreensão dos códigos...

______________________________________________________

Inserir também um  rótulo para servir de titulo para a caixa de texto... alterar o propriedade Caption do rótulo para VALOR...





______________________________________________________

Hoje vou mexer na posição dos meus objetos para ficar de forma mais agradável para o utilizador... fiz 
assim:

______________________________________________________

Agora vou mexer no código para que funcione também com o novo objeto (caixa de texto) inserido...
vou marcar em amarelo o que foi inserido para melhor compreendermos...

Function CADASTRO()

If UserForm1.TextBox2.Text = "" Then
MsgBox " PRODUTO É UM CAMPO OBRIGATÓRIO", vbExclamation
UserForm1.TextBox2.SetFocus
Exit Function
Else
End If
'(copiei o código de cima, e troquei os nomes do objeto e campo na  planilha)
If UserForm1.TXT_VALOR.Text = "" Then
MsgBox " VALOR É UM CAMPO OBRIGATÓRIO", vbExclamation
UserForm1.TXT_VALOR.SetFocus
Exit Function
Else
End If

Dim linha As Integer
Dim BANCO As Database
Dim TABELA As Recordset

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

Sql = "insert into [TESTE_NUMERO$] (NUMERO,PRODUTO,VALOR)VALUES ('" & UserForm1.TextBox1 & "','" & UserForm1.TextBox2 & "','" & UserForm1.TXT_VALOR & "')"
'(inseri o novo campo e o novo objeto)

BANCO.Execute Sql
BANCO.Close

Módulo1.NUMERO

UserForm1.TextBox2.Text = ""

UserForm1.TXT_VALOR.Text = ""  '(copiei e troquei o objeto)

UserForm1.TextBox2.SetFocus

End Function
______________________________________________________

Temos que mudar a ordem de tabulação no formulário pois ao executar o formulário e digitar o produto o focu vai para o botão e não para o valor (isso ocorre por que o TextBox3 (TXT_VALOR) foi inserido após o botão). Então é só clicar com o botão direito do mouse sobre o UserForm e trocar a ordem de tabulação...

______________________________________________________

Vamos dar um clique duplo sobre a segunda caixa de texto... para abrir o Editor VBA e vamos por um código que fará com que tudo o que for digitado nela seja maiúsculo... o código é...


Private Sub TextBox2_Change()
Me.TextBox2.Text = UCase(Me.TextBox2.Text)
End Sub


______________________________________________________

Vou colocar também na caixa de texto TXT_VALOR um código para formatar como moeda o valor digitado...

Para isso damos um clique duplo no objeto para abrir o editor de códigos, mudamos o evento de Change para AfterUpdate que executará o código apenas quando sair da caixa de texto...



____________________________________________________

Pronto agora vamos testar se nosso trabalho foi feito corretamente. O resultado deverá ser esse do vídeo.

Isso aí galera vou fazer uns posts com vídeos assim como fiz esse final aqui, espero que gostem...



At; Edivan Cabral...