Você está na página 1de 13

Comandos do VBA - Excel

COPIAR DE UMA CLULA PARA OUTRA VBA Sub copiar() Range("b5").Select Clula que vai ser copiada Selection.Copy Range("a2").Select Clula que vai receber o conteudo copiado ActiveSheet.Paste Sheets(plan2).Select Seleciona a planilha 2 Range(a1).Select Seleciona a clula A1 da planilha 2 ActiveSheet.Paste Cola na clula A1 da planilha 2 Application.CutCopyMode = False Desseleciona a clula que foi copiada End Sub PULA PARA A CLULA VAZIA ABAIXO (PREENCHIMENTO DE FORMULRIO) Private Sub CommandButton1_Click() Range("a3").Select Selection.EntireRow.Insert 'Insere uma linha na planilha Range("a3") = TextBox1.Text 'Recebe o conteudo da textbox1 Range("b3") = TextBox2.Text Range("a3").Select End Sub RowCount = Worksheets("Plan1").Range("A1").CurrentRegion.Rows.Count Worksheets("Plan1").Range("A1").Offset(RowCount, 0).Value = TextBox1.Text COMANDO PROCV NO VBA EXCEL Sub Teste_PROCV() [G1].FormulaLocal = "=PROCV(F1;A1:B20;2;0)" End Sub MsgBox Concatenando (&) MsgBox "O maior : " & valor2, , "resultado" O ttulo da msgbox sera resultado, e a mensagem que aparecer ser O maior : &valor2, sendo que o sinal & junta (concatena) a mensagem com a varivel valor2 (ser mostrado o valor da varivel). Iniciando o formulrio junto com a planilha Abra o editor VBA, clique em EstaPasta_de_trabalho, na tela ao lado escolha workbooks e depois escreva o cdigo: Userform1.Open Userform1 o nome do formulrio, que pode ser outro nome Ficar assim: Private Sub Workbook_Open() UserForm1.Show UserForm1 o nome do formulrio End Sub SELECIONAR VARIAS LINHAS Sub Seleciona() Set myunion = Union(Range("a1"), Range("d5"), Range("b1:b5")) myunion.Select End Sub PULAR LINHA Private Sub PularLinha_Click() ActiveCell.Offset(1, 0).Activate Esse comando vai pulando para a linha de baixo ActiveCell.Offset(-1, 0).Activate Esse comando vai pulando para a linha de cima ActiveCell.Offset(0, 1).Activate Esse comando vai pulando para a clula da direita ActiveCell.Offset(0, -1).Activate Esse comando vai pulando para a clula da esquerda ActiveCell.Offset(1, 0).Range("b2").Select Pula uma linha para baixo a partir da clula B2 End Sub

Comandos do VBA - Excel

FORMATANDO A CLULA Range("d4").Interior.ColorIndex = 36 36 referente a cor amarela Range(a1).HorizontalAlignment = xlCenter Centraliza o contedo da clula ActiveCell.BorderAround (1) Adiciona borda, o numero entre parenteses refere-se ao tipo de borda. 1 = Borda Simples e 9 = Borda Dupla [b2].BorderAround (9) Tambm adciona borda este mtodo ActiveCell.Characters.Font.Size = 22 Altera o tamanho da Fonte ActiveCell.Characters.Font.Name = "algerian" Altera o tipo da fonte para Algerian [b2].Characters.Font.Name = "algerian" Esse mtodo tambm altera a fonte ActiveCell.Characters(Start:=2, Length:=2).Font.Name = Algerian Esse mtodo muda somente a partir da 2 letra (Start := 2) do que estiver escrito na clula selecionada e apenas 2 caracteres (Length := 2). Por exemplo: Se digita-se marcelo na clula apenas a letra a e r ficaria no estilo Algerian. ActiveCell.Font.FontStyle = "itlico" Mudo o estilo da Fonte Columns("b:b").AutoFit Adapta o tamanho da coluna ao tamanho da escrita Rows("2:2").AutoFit Adapta o tamanho da linha ao tamanho da escrita Range("b3").FormulaLocal = "=pri.maiuscula(b2)" converte a incial da String em maiscula, no caso b3 recebe a string digitada em b2 com a inicial j maiscula Rows("1:1").RowHeight = 18 Aumenta o tamanho da linha Columns("b:b").ColumnWidth = 20 Aumenta o tamanho da coluna Range("a2") = UCase(Range("a1")) A clula A2 recebe a string digitada em A1 (minscula) j convertido em maisculo. ADCIONANDO COMENTRIOS Range("b2").AddComment ("Marcelo") Adciona o comentrio Marcelo na clula B2 ActiveCell.AddComment (Marcelo) Adciona o comentrio Marcelo na clula selecionada ActiveCell.ClearComments Limpa o comentrio ActiveCell.AddComment.Text Text:="Marcelo" & Chr(10) & "maisa" Adciona comentrio, chr(10) para pular linha COMANDO FIND (PESQUISAR) Private Sub CommandButton1_Click() On Error GoTo erro Comando para imprimir mensangem de erro se nada for encontrado If TextBox1.Text = "" Then Imprime uma mensagem se a pesquisa estiver em branco MsgBox "Informe o valor a ser procurado", , "Pesquisar" End If Cells.Find(what:=TextBox1, after:=ActiveCell, lookat:=xlPart).Activate Comando para pesquisar Exit Sub erro: MsgBox "Nada encontrado", , "ERRO" Mensagem de erro(especificado acima) quando o texto pesquisado no encontrado End Sub CONTADOR DE REGISTROS Label1 = Application.WorksheetFunction.CountA(Plan1.Columns(1)) Contador para a coluna 1, caso queira comear a contar a partir de uma determinada linha coloque por exemplo: -1 para contar a partir da segunda linha da coluna escolhida, no exemplo aqui coluna 1 (Columns(1)) Label1 = (Application.WorksheetFunction.CountIf(Columns("a:a"), TextBox1.Text)) Nesse exemplo contado as clulas que se repetem de acordo com o critrio adotado, aqui TextBox1.Text ira receber algum texto e se esse texto se repetir na Coluna A ento ser contado quantas vezes se repetiu. CRIANDO UM CONTADOR COM O BOTAO SPINBUTTON Private Sub SpinButton_SpinDown() Procedimento do boto SpinButton declarado na

Comandos do VBA - Excel


Parte superior (Relativo ao boto para baixo cont = cont 1 Quando clicar na seta para baixo ir decrementar If cont < 0 Then Se for menor zero entao fica como valor minimo 0 (zero) cont = 0 End If Label1.Caption = cont Label que recebe o valor do contador End Sub Private Sub SpinButton_SpinUp() Relativo ao boto para cima cont = cont + 1 Quando clicar na seta para cima ir incrementar Label1.Caption = cont Label que recebe o valor do contador End Sub CRIANDO UM CONTADOR COM O BOTO SCROLLBAR Private Sub ScrollBar1_Change() Contador clicando nas setas para cima e para baixo cont = ScrollBar1.Value Label1.Caption = cont End Sub Private Sub ScrollBar1_Scroll() Contador clicando no meio da scrollbar arrastando-a cont = ScrollBar1.Value Label1.Caption = cont End Sub NAVEGANDO ENTRE AS CLULAS COM O BOTO SpinButton Private Sub contador_SpinDown() Move uma clula para baixo ActiveCell.Offset(1, 0).Activate End Sub Private Sub contador_SpinUp() Move uma clula para cima ActiveCell.Offset(-1, 0).Activate End Sub NAVEGANDO ENTRE AS CLULAS COM O BOTAO ScrollBar Public cont As Integer Dim soma As Integer Private Sub ScrollBar1_Change() soma = cont cont = ScrollBar1.Value If cont > soma Then ActiveCell.Offset(1, 0).Activate Else ActiveCell.Offset(-1, 0).Activate End If Label1.Caption = cont End Sub COLORINDO CLULAS Sub CORES() Range("A1").SelecT For I = 1 To 56 ColorIndex = I ActiveCell.Interior.ColorIndex = ColorIndex ActiveCell.Offset(1, 0).Activate Next End Sub Sub CORES()

Comandos do VBA - Excel


Range("A1").Select For I = 1 To 10 For J = 1 To 5 ColorIndex = I ActiveCell.Interior.ColorIndex = ColorIndex ActiveCell.Offset(1, 0).Activate Next ActiveCell.Offset(0, 1).Activate ActiveCell.Offset(-5, 0).Activate Next End Sub FUNO ONTIME Public Sub ExecutaOnTime() MsgBox "Opa! Executou." End Sub Public Sub TesteOnTime() Executa determinada funo de acordo com o tempo especificado, no exemplo abaixo ir excutar a MsgBox Opa! Executor aps 10 seg. Call Application.OnTime(Now + TimeValue("00:00:10"), "ExecutaOnTime") End Sub RELGIO Public Sub StartTimer() Application.OnTime EarliestTime:=Time + TimeValue("00:00:01"), Procedure:="AtualizaRelogio" End Sub Public Sub StopTimer() Application.OnTime EarliestTime:=Now + TimeValue("00:00:01"), Procedure:="AtualizaRelogio", Schedule:=False End Sub Public Sub AtualizaRelogio() On Error Resume Next Worksheets(1).Range("A1").Value = Worksheets(1).Range("A1").Value + TimeValue("00:00:01") Application.OnTime EarliestTime:=Now + TimeValue("00:00:01"), Procedure:="AtualizaRelogio" End Sub CONFIRMANDO DECISES COM O MsgBox Sub teste() Dim resultado As VbMsgBoxResult resultado = MsgBox("deseja sair?", vbYesNo, "testando") If resultado = vbYes Then Se clicar em Sim MsgBox "voce clicou em ok" Else MsgBox "voce clicou em nao" Clicar em no End If End Sub Constante Valor Descrio vbOK vbCancel vbAbort vbRetry vbIgnore vbYes vbNo 1 2 3 4 5 6 7 OK Cancelar Abortar Repetir Ignorar Sim No

MOSTRAR MENSAGEM EM HORARIO ESPECIFICADO Sub teste() Application.OnTime earliesttime:=TimeValue("10:54AM"), PROCEDURE:="TESTE2" Chama a Sub Teste2 no horario especificado: 10:54AM). End Sub Sub teste2() MsgBox "Ola Marcelo" End Sub

Comandos do VBA - Excel


CLULA PISCANDO Exemplo 1 Sub Piscar() Range("a1").Interior.ColorIndex = 3 Coloca a cor vermelha na clula ativa Application.OnTime Now + TimeValue("00:00:01"), "Tempo" Excecuta o procedimento End Sub Tempo de 1 em 1 segundo Sub Tempo() Range("a1").Interior.ColorIndex = xlNone Descolore a clula ativa Application.OnTime Now + TimeValue("00:00:01"), "Piscar" Executa o procedimento End Sub Piscar 1 em 1 segundo Exemplo 2 Sub pisca() Dim x As Integer Dim pausa As Currency Dim inicio As Date For x = 1 To 40 'total de piscadas pausa = 0.2 'durao da pausa entre as piscadas em segundos inicio = Timer ' hora inicial Do While Timer < inicio + pausa DoEvents 'submeta a outros processos Loop If Range("b10").Interior.ColorIndex = 6 Then Range("b10").Interior.ColorIndex = 3 Else Range("b10").Interior.ColorIndex = 6 End If Next x End Sub FOR DECREMENTADO For i = 4 To 1 Step -1 'Da direita para a esquerda Next COMANDO FOR EACH E ARRAYS Sub inicializa_arrays() Dim arrays_pais(5) As String Arrays de 0 a 5 espaos Dim contador As Integer For contador = 0 To UBound(arrays_pais) 1 Conta o tamanho do array (Ubound) arrays_pais(contador) = InputBox("Nome do pais: ") Next For Each pais In arrays_pais Percorre o array MsgBox pais Varivel (pais) qualquer que ir receber sucessivamente os valores do array Next End Sub ARRAY DINMICO Redim x(6) Modifica o tamanho do Array x mas apaga todos os outros valores anteriores. Redim Preserve x(6) Modifica o tamanho do Array x, mas preserva os valores anteriores. STRING Cstr() Converte uma expresso em String Range("b3") = Len(Range("b2")) Este exemplo retorna na clula B3 o tamanho da String digitada na clula B2 nome = Chr(34) & "marcelo" & Chr(34) Chr(34) imprime o Aspas dupla ( )

Dim nome As string * 20 Define uma string fixa de 20 caracteres


COMPARA = "MARCELO" Like "MARCELO" COMPARA uma variavel qualquer e o seu valor nesse exemplo Verdadeiro

Comandos do VBA - Excel


COMPARA = "MARCELO" Like "Marcelo" Aqui o resultado seria falso Str(nmero) Converte um valor numrico em String Len(String) Determina o nmero de caracteres da String String(Tamanho,String) Cria uma String igual ao tamanho especificado e que contm o primeiro caracter da String Lcase(String) Converte a String para minscula Ucase(String) Converte a String para maiscula Split(String) Divide uma String e retorna as Substrings como um array de strings Exemplo: Private Sub CommandButton1_Click() Dim i As Integer Dim vetor As Variant vetor = Split(TextBox1.Text) 'ListBox1.Clear For i = LBound(vetor) To UBound(vetor) ListBox1.AddItem i & vbTab & vetor(i) Next End Sub Se substituirmos o cdigo por Vetor = Split(Textbox1.text, , 2), iremos obter 2 substrings. Podemos tambm acrescentar por exemplo a consoante s, para indicar onde a diviso ir ocorrer, por exemplo: Private Sub CommandButton1_Click() Dim i As Integer Dim vetor As Variant vetor = Split(TextBox1.Text, s) ListBox1.Clear For i = LBound(vetor) To UBound(vetor) ListBox1.AddItem i & vbTab & vetor(i) Next End Sub Private Sub CommandButton1_Click() Dim frase As String Dim vetor As Variant frase = "Avaliao do impacto do treinamento no trabalho do programador" vetor = Split(frase, " do ") MsgBox " 'do' aparece na texto ' " & frase & " ' " & UBound(vetor) & " vezes." End Sub No exemplo acima estaremos contando quantas vezes a preposio do aparece no texto citado. Se quiser contar quantas vezes a substring do aparece (nesse caso no preposio, ento iria contar o do de programador tambm) s mudar o cdigo: Split(frase, do ) por Split(frase,do), sem os espaos entre as aspas. StrReverse(String) Retorna uma String com os caracteres invertidos Replace(string, StrProcura, StrSubstPor, Inicio, Contador, Compare) String: a String a ser alterada. StrProcura: a String(0u Caracter) a ser procurado na String. StrSubsPor: a String (Ou caracter) usada para substituir a String(StrProcura). Incio: Indica o incio da busca por StrProcura ( opcional). Contador: Indica o nmero mximo de vezes que a String StrProcura ser substituda. Compare: O modo de comparao a ser efetuada. Exemplo: Frase = " Geralmente , temos um problema , quando a temperatura aumenta " NovaFrase = Replace(Frase, "," , ";" ) MsgBox novafrase Ficar assim: Geralmente; temos um problema; quando a temperatura aumenta Asc(A) Mostra o cdigo Ascii do caracter, no caso A igual a 65 Atualizando o ListBox Private Sub CommandButton1_Click() Dim tanto As Integer linha = Range("A100").End(xlUp).Row tanto = 0 For i = 0 To linha

Comandos do VBA - Excel


tanto = tanto + 1 ListBox1.AddItem Cells(tanto, 1).Value Mostrar na Listbox os valores inseridos at A100 Next End Sub TRABALHANDO COM DATAS Month(Date) Mostra o nmero do ms atual, por exemplo: Setembro 09. MonthName() Recebe um nmero (relativo ao ms 0 a 12) e ele te retorna o ms por extenso. Exemplo: MontName(12) = Dezembro. Podemos fazer assim : Sub teste() MsgBox MonthName(Month(Date)) Aqui ele mostra por extenso o ms vigente End Sub Date() Mostra a data atual. Time() Mostra a hora do sistema. Day() Retorna um nmero relativo ao dia do ms, pode-se fazer assim tambm: Day(Date()) Retorna o dia do ms vigente. Month() Igual a anterior, s que retorna o ms. Exemplo: Month(Date()). Now() Retorna a data e a hora do sistema. DateDiff("d", DATA1, DATA2) Calcula o intervalo entre duas datas, d referente ao tipo de pesquisa que neste caso ser em dias, Ms m e Ano a, DATA1, a data incial e DATA2 a data final DateAdd(Intervalo, N_de_Intervalo,Data) Determina uma data futura, com base em uma data fornecida, o tipo de perodo a ser acrescenado (d-dias; m=ms; y-ano). Exemplo: DateAdd(m,1000,22/04/1500) Neste exemplo queremos saber uma data futura de 1000 meses (m) aps o descobrimento (22/04/1500). Se quisermos saber em dias s trocar o m por d ou se quisermos saber em anos trocamos por y. Year() Retorno um numero indicativo do ano. Exemplo: Year(Date()) Retorna o ano vigente. WeekDay(data, 1_dia_semana) Retorna um nmero relativo ao dia da semana: 1-Domingo ...... 7-Sbado. Podemos definir o primeiro dia da semana tambm, por exemplo, caso queira colocar segunda como o primeiro dia, aps especificar a data, depois da vigula coloque 2. WeeDayName() Mostra por extenso a data, Exemplo: WeekdayName(WeekDay(01/09/2010)) Este exemplo mostra Quarta-Feira. CDATE() Converte a expresso pro formato Date MsgBox Cdate(12-11-2010) FUNES PARA CLCULOS MATEMTICOS Abs(n) Retorna o valor absoluto (sem sinal), do nmero n. Rnd(n) Retorna um nmero aleatrio entre 0 e 1. Rnd*10 Gera um nmero aleatrio entre 0 e 10 Sqr(n) Retorna a Raiz quadrada do nmero n. 2 ^ 3 Aqui calcula-se a potncia de 2 elevado a 3. LAO WHILE 1) Do While Condio/Teste Teste no comeo Comando 1 Comando 2 ................. Comando n Loop Aqui enquanto a condio for verdadeira o cdigo sera executado. O teste da condio feito no comeo do lao 2) Do Teste no final Comando 1 Comando 2 .............. Comando n Loop While Teste/Condiao. Aqui o teste feito no final, tambm ser executado enquato a condio for verdadeira.

Comandos do VBA - Excel


3) Do Until Teste/Condio Teste no comeo Comando 1 Comando 2 .............. Comando n Loop Aqui enquanto a condio for falsa o cdigo sera executado. O teste da condio feito no comeo do lao 4) Do Teste no final Comando 1 Comando 2 .............. Comando n Loop Until Teste/Condio Aqui o teste feito no final, tambm ser executado enquato a condio for falsa TEXTBOX QUE S ACEITA NMEROS Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If KeyAscii = vbKeyReturn Or KeyAscii = vbKeyBack Then Exit Sub End If If KeyAscii < vbKey0 Or KeyAscii > vbKey9 Then KeyAscii = 0 End IF Neste exemplo, se for digitado letras, nada ser mostrado na TextBox, ficar em branco End Sub Exemplo 2: Private Sub CommandButton1_Click() If Not IsNumeric(TextBox1.Value) Then O commando Not est negando o valor numrico MsgBox "informe um numero" Este mesmo comando poderia ser feito com datas tambm End IF era s trocar o IsNumeric por IsDate End Sub FORMATANDO CASAS DECIMAIS TextBox2.Text = Format(TextBox1.Text, "###.00") Aqui nesse exemplo a Textbox2 ir receber j formatado pra duas casas decimais depois da vrgula, o numero que for digitado na textbox1. TextBox2.Text = Format(TextBox1.Text, "dd/mmmm/yyyy") Formata pra tipo de data TextBox2.Text = Format(TextBox1.Text, "##/####/####") Mesmo efeito do exemplo anterior TextBox2.Text = FormatCurrency(TextBox1, 2) Aqui ele adiciona o R$ e pra duas casas decimais, de acordo com o ultimo numero depois da vrgula, aqui no caso 2 TextBox2.Text = Format(TextBox1.Text, "0.00") Aqui tem o mesmo efeito do primeiro exemplo Format(Now, "dd/mm/yyyy hh:nn:ss") PREENCHENDO FORMULRIO 2 RowCount = Worksheets("Plan1").Range("A1").CurrentRegion.Rows.Count Worksheets("Plan1").Range("A1").Offset(RowCount, 0).Value = TextBox1.Text Aqui ele comea a preencher uma clula abaixo (A2) da clula indicada (A1). Se quiser inserir na coluna B modifique o valor Zero para 1 e na coluna C para 2 e assim por diante, RowCount seria uma variavel. USANDO O COMANDO FOR EACH PARA LIMPAR For Each ctl In Me.Controls If TypeName(ctl) = "TextBox" Or TypeName(ctl) = "ComboBox" Then ctl.Value = "" ctl uma variavel do tipo Controls ElseIf TypeName(ctl) = "CheckBox" Then ctl.Value = False End If Next ctl

Comandos do VBA - Excel


Na segunda linha esta dizendo que todas as caixas de texto (TextBox) e Caixas Combo (ComboBox) sero zeradas. E na quarta linha esta dizendo que todas as caixas de verificao (CheckBox) ficaro desmarcadas (False). BOTAO PARA SAIR DO FORM Private Sub cmdCancel_Click() Unload Me End Sub OCULTAR PLANILHA Worksheets("plan1").Visible = False Oculta a planilha Plan1 COMANDOS TEIS IsArray() IsDate() IsEmpty() IsError() IsNUll() IsNumeric() IsObject() True se a expresso for verdadeira, False se no for. True se a Expresso do tipo Date, False se no for. True se nenhum valor for atribudo a varivel. True se expresso conter algum erro. True se a expresso apresentar valor Null (Nulo). True se a expresso for numrica. True se se tratar de um objeto.

CONCATENANDO O COMANDO RANGE COM O VALOR DE UMA VARIVEL Sub teste() Dim a As Single a=3 A variavel A recebe valor 3 Range("a" & a) = "marcelo" Nesse exemplo ser escrito marcelo na clula A3 End Sub CHAMANDO AS FUNES DISPONVEIS NO EXCEL WorksheetFunction.Sum(Range(a1:a5)) Nesse exemplo estamos somando de A1 at A5 Range(b1).FormulaLocal = =Soma(a1:a5) Esse exemplo tambm faz a soma CRIANDO UMA VARIVEL ESTTICA Sub acumulador() Static total Declarando uma varivel esttica Dim a As Integer x = Range("a1").Value y = Range("b1").Value z=x-y total = total + z Cdigo pra ir sempre somando, incrementando Range("c1").Value = total End Sub UTILIZANDO O COMANDO SELECT Sub Seleo() ' Exemplo do comando Select / End Select Dim x As Integer x = InputBox("Informe um valor") Select Case x Case Is < 0 Caso x seja menor que zero entao... MsgBox "Numero Negativo" Case 0 To 10 Caso x seja menor/igual a 10 entao... MsgBox "Numero positivo" Case Is > 10 Caso x seja maior que 10 entao... MsgBox "Numero positivo maior que 10" End Select End Sub CASE

Comandos do VBA - Excel


CHAMANDO UMA SUB DENTRO DE OUTRA SUB Sub x(a) Essa Sub possui um argumento MsgBox a End Sub Sub y() Call x("marcelo") Aqui chama-se a Sub x, adicionando a String no lugar do seu argumento End Sub CHAMANDO UMA FUNO DENTRO DE UMA SUB Sub somar() O procedimento aqui chama a funo Somador e retorna 8 MsgBox Somador(3, 5) End Sub Function Somador(x, y) Funo (Function) que faz a soma Somador = x + y End Function PASSANDO ARGUMENTOS POR REFERNCIA E POR VALOR POR REFERNCIA (ByRef) Sub TestePassagem1() Por Default o VBA passa por referncia Dim y As Integer y = 50 AdicionaNo1 y MsgBox y Aqui o resultado 60 End Sub Sub AdicionaNo1(ByRef x As Integer) Se retirar o ByRef tambm funcionaria x = x + 10 End Sub POR VALOR (ByVal) Sub TestePassagem2() Dim y As Integer y = 50 AdicionaNo2 y MsgBox y O resultado ser 50 End Sub Sub AdicionaNo2(ByVal x As Integer) Se retirar o ByVal ele passaria por referncia x = x + 10 End Sub DECREMENTANDO O LAO FOR For i=10 to 1 Step -1 Decrementa de 1 em 1 For i=10 to 1 Step -2 Decrementa de 2 em 2, e assim por diante INSERINDO GRFICOS Sub Macro1() Range("A1:c5").Select Charts.Add ActiveChart.ChartType = xlColumnClustered Tipo de grfico mostrado ActiveChart.SetSourceData Source:=Sheets("Plan1").Range("a1:c5"), PlotBy:=xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="Plan1" ActiveChart.Axes(xlValue).ScaleType = xlLogarithmic Esse cdigo para as barras com valores muito pequenos no sumirem devido existir barras com valores muito altos End Sub ActiveChart.SeriesCollection(1).Select Comando para selecionar as barras do grfico, nesse caso a barra 1 (Contando da esquerda para direita), que no exemplo so as barras azuis.

Comandos do VBA - Excel


ActiveChart.SeriesCollection(1).ApplyDataLabels AutoText:=True, LegendKey:= _ False, ShowSeriesName:=False, ShowCategoryName:=False, ShowValue:=True, _ ShowPercentage:=False, ShowBubbleSize:=False Esse commando tem vrias funes, como por exemplo, colocar legenda, o valor das barras entre outros ActiveChart.SeriesCollection(1).ApplyDataLabels ShowValue:=True Esse comando coloca o valor das barras selecionadas do grfico ARMAZENAR VRIAS MENSAGENS DE UMA S VEZ NO MsgBox NO COMANDO FOR For i = 0 To 6 mensagem = mensagem & "Dia: " & i + 1 & " " & Dias(i) & Chr(13) Next Dessa forma armazena todas as mensagens de uma s vez, diferente do exemplo abaixo MsgBox = mensagem For i = 0 To 6 MsgBox "Dia: " & i + 1 & " " & Dias(i) & Chr(13) Next Dessa forma teria que apertar enter varias vezes (7) pra ir aparecendo as mensagens FUNO VarType VarType(Nome da Varialve) ou VarType(Expresso) Determina o tipo de dado armazenado na varivel. A seguir temos os cdigos de retorno da funo VarType: 0 Vazio (no inicializado) 1 Nulo (dados no vlidos) 2 Inteiro 3 Inteiro longo 4 Nmero de preciso simples 5 Nmero de preciso dupla 6 Monetrio. 7 Data 8 Texto 9 Objeto de automao 10 Erro 11 Boleano 12 Variant (somente utilizado com Arrayvariantes) 13 Um objeto para acesso a dados. 17 Byte 8192 Array Uma aplicao prtica seria a validao de dados de um formulrio VERIFICANDO UMA DATA VALIDA NO FORMULARIO Private Sub CommandButton1_Click() If IsDate(TextBox1.Value) = True Then TextBox1 = VBA.FormatDateTime(TextBox1, vbGeneralDate) TextBox2.Text = TextBox1.Text Else msg = MsgBox("Data Invlida!" & Chr(13) & "Favor verifique a data indicada.", vbCritical, "Erro") TextBox1.Value = vbNullString TextBox1.SetFocus End If End Sub GERANDO NMEROS ALEATRIOS Randomize Sem o Randomize ele gera os mesmos numeros sempre que for inicializado x = Int(Rnd * (10)) Gera numeros de 1 a 10, o Int pra no gerar numeros quebrados. Exemplo: Sub NumerosAletatorios() Nesse exemplo gera uma sequncia de 4 numeros aleatrios Dim x, y(3) 'Range("a1").Select For i = 1 To 4

Comandos do VBA - Excel


Randomize x = Int(Rnd * (10)) ActiveCell.Value = x ActiveCell.Offset(0, 1).Activate Next End Sub COMANDO WHILE WEND Sub teste() semelhante ao For Dim i As Integer i=0 While i <= 10 ActiveCell.Value = i ActiveCell.Offset(1, 0).Activate i=i+1 Wend End Sub DIFERENA ENTRE InputBox e Application.InputBox A principal diferena que Application.InputBox capaz de verificar automaticamente o tipo de dados que deve ser inserido na caixa de texto do caixa de dilogo mostrada e InputBox no. Estrutura do Application.InputBox: Application.InputBox(Prompt, Title, Default, Left, Top, HelpFile, HelpContextId, Type) Prompt: Mensagem a ser exibida na caixa de mensagem. Title: Ttulo da caixa de entrada. Type: Especifica o dado retornado conforme a tabela abaixo:

Exemplo: Public Sub TesteAppInputBox() Dim num As Long num = Application.InputBox("Digite um valor numrico", "Application.InputBox", "Valor numrico", , , , , 1) MsgBox "O valor digitado foi: " & num End Sub CANCELANDO INPUTBOX Sub teste() Aqui estou usando o Application.InputBox Dim erro Dim x erro: x = Application.InputBox("informe um numero", , , , , , 1) If x = False Then Exit Sub End If If IsNumeric(x) = False Then MsgBox "isso no um numero" GoTo erro Else MsgBox x End If End Sub

Comandos do VBA - Excel


COMANDO GOTO para: Identificar do GOTO, os dois pontos : obrigatrio y = Application.InputBox("Informe o seu nome: ") GOTO vir para essa linha If y = False Then x = MsgBox("Deseja realmente sair?", vbYesNo, "Sair") If x = vbYes Then Exit Sub Else GoTo para GOTO ir para a primeira linha aps o identificador End If End If COLOCANDO EM ORDEM CRESCENTE OU DECRESCENTE Range("a1").Select Seleciona a primeira clula da coluna Selection.Sort Key1:=Range("a1"), Order1:=xlDescending, Header:=xlGuess Ordem decrescente O comando Header:=xlGuess pega o conteudo da primeira clula (Em destaque: Negrito) e no o coloca na ordem junto como o restante da coluna que vai sofrer o comando Selection.Sort Key1:=Range("a1"), Order1:=xlDAscending, Header:=xlGuess Ordem crescente INSERINDO WORLD ART ActiveSheet.Shapes.AddTextEffect(msoTextEffect22, "Maisa", "impact", 20#, msoFalse, msoFalse, 200, 70).Select O numero 22 o tipo de Worl Art; Maisa a String, Impact o tipo da fonte, 20 o tamanho da fonte, 200 e 70 a posio na tela USANDO A FUNO TYPE Type Dados_Pessoais Nome As String Idade As Date DataNascimento As Date End Type Sub Tipos_definidos_Utilizador() Dim Pessoa As Dados_Pessoais Pessoa.Nome = "Francisco" Pessoa.Idade = InputBox("informe a data: ") Range("a1") = Pessoa.Nome Range("a2").Value = Pessoa.Idade MsgBox Pessoa.Nome & Chr(13) & Pessoa.Idade End Sub

Você também pode gostar