Códigos Úteis em VBA

  1. Atualizar Tabelas Dinâmicas (versão 1)

'Dimensionar variáveis
    Dim pt As PivotTable
    Dim ws As Worksheet

'Atualiza Pivot Tables uma a uma
    For Each ws In ActiveWorkbook.Worksheets
        For Each pt In ws.PivotTables
           pt.RefreshTable
          Next pt
       Next ws

2. Atualizar Tabelas Dinâmicas (versão 2)

ActiveWorkbook.RefreshAll

3. Tela Cheia e Tela Normal

Sub Apresentar_on()
Application.ExecuteExcel4Macro "SHOW.Toolbar(""Ribbon"", False)" 'Oculta todas as guias de menu
Application.DisplayFormulaBar = False 'Ocultar barra de fórmulas
Application.DisplayStatusBar = False 'Ocultar barra de status, disposta ao final da planilha

With ActiveWindow
.DisplayWorkbookTabs = False 'Ocultar guias das planilhas
.DisplayHeadings = False 'Oculta os títulos de linha e coluna
End With
End Sub

Sub Apresentar_off()
Application.ExecuteExcel4Macro "SHOW.Toolbar(""Ribbon"", True)" 'Reexibir todas as guias de menu
Application.DisplayFormulaBar = True 'Reexibir barra de fórmulas
Application.DisplayStatusBar = True 'Reexibir barra de status, disposta ao final da planilha

With ActiveWindow
.DisplayWorkbookTabs = True 'Reexibir guias das planilhas
End With
End Sub

4. Impressão em PDF

Sub Impressao_pdf()


Sheets("Tabelas Dinâmicas").Range("A1").FormulaR1C1 = "=YEAR(TODAY())&MONTH(TODAY())&DAY(TODAY())&""-""&HOUR(NOW())&MINUTE(NOW())"
NOME = Sheets("Planilha").Range("A1").Value

    Sheets(Array("Planilha1", "Planilha2", "Planilha3", "Planilha4")).Select
    Sheets("Planilha1").Activate
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\Adm\Desktop\Curso_Avançado\Exercícios Dominando Dashboards\Dashboards_" & NOME & ".pdf" _
        , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=True
    Sheets("Planilha").Select
End Sub

5. Aparecer e Sumir Imagem

Sheets("Planilha").Shapes("Imagem").Visible = False 'Sumir uma imagem

Sheets("Planilha").Shapes("Imagem").Visible = True 'Aparecer uma imagem

6. Atualização da tela

Application.ScreenUpdating = False      'Para a atualização - coloque no início
Application.ScreenUpdating = True      'Libera a atualização - coloque no final

7. Bloqueio

'Bloquear a planilha senha teste
    Sheets("Planilha").Protect "teste"

'Desbloquear a planilha senha teste
    Sheets("Planilha").Unprotect "teste"

'Bloquear a planilha tabelas
    Sheets("Tabelas Dinâmicas").Protect AllowUsingPivotTables:=True, Password:="teste"

8. Chamar outra macro

Call macro

9. Mostrar uma mensagem

Sub mensagens()

MsgBox "Sua mensagem aqui!"
MsgBox "Mensagem1" + vbCrLf + "Mensagem 2", vbYesNo, "Título"
MsgBox "Mensagem1" + vbCrLf + "Mensagem 2", vbInformation, "Título"
End Sub

'vbOKOnly: Exibe apenas o botão OK
'vbOKCancel: Exibe os botões OK e Cancelar
'vbAbortRetryIgnore: Exibe os botões Abortar, Repetir  e Ignorar
'vbYesNoCancel: Exibe os botões Sim, Não e Cancelar
'vbYesNo: Exibe os botões Sim e Não
'vbRetryCancel: Exibe os botões Repetir e Cancelar

'vbCritical: Exibe o ícone Mensagem Crítica
'vbQuestion: Exibe o ícone Consulta de Aviso
'vbExclamation: Exibe o ícone Mensagem de Aviso
'vbInformation: Exibe o ícone Mensagem de Informação

10. Zoom Automático

Range("tela").Select
ActiveWindow.Zoom = True

11. Condição (If)

If a = 1 Then 'Teste lógico
'O que vai acontecer se verdadeiro
Else
'O que vai acontecer se falso
End If

12. Condição (Case)

X = range("A1").value 'Variável que será testada 

Select Case X 
Case 1 To 5    'Se X for igual a 1, 2, 3, 4 ou 5 
    Msgbox "Está entre 1 e 5"
 
Case 6, 7, 8    'Se X for igual a 6, 7 ou 8  
    Msgbox "Está entre 6 e 8"

Case 9    'Se X for igual a 9 
    Msgbox "É igual a 9"
Case Else    ' Outros valores 
    Debug.Print "O valor não está entre 1 e 9" 
End Select

13. Encerrar a macro

Exit Sub

14. Carregar Imagem sem Erro

Private Sub CommandButton1_Click()
fotopasta = Application.GetOpenFilename '(FileFilter:="Image Files(*.jpg), *.jpg")
If fotopasta <> False Then Image1.Picture = LoadPicture(fotopasta)
End Sub

15. Enviar e-mail com anexos

Private Sub CommandButton1_Click()

If CheckBox1 = True Then
Call ANEXO_CADASTRO
ANEXO1 = "C:\Relatoriodiario\Informação_do_dia.pdf"
Else
ANEXO1 = ""
End If

If CheckBox2 = True Then
Call ANEXO_CALCULADORA
ANEXO2 = "C:\Relatoriodiario\Calculadora.pdf"
Else
ANEXO2 = ""
End If

If CheckBox3 = True Then
Call ANEXO_PAINEL
ANEXO3 = "C:\Relatoriodiario\Dashboard.pdf"
Else
ANEXO3 = ""
End If

If CheckBox4 = True Then
Call ANEXO_SELIGA
ANEXO4 = "C:\Relatoriodiario\SeLiga.pdf"
Else
ANEXO4 = ""
End If

Set objeto_outlook = CreateObject("Outlook.Application")
Set email_envio = objeto_outlook.createitem(0)

With email_envio

.to = TextBox4.Value
.cc = TextBox5.Value
.bcc = ""
.Subject = TextBox6.Value
.htmlbody = TextBox7.Value

If ANEXO1 <> "" Then
    .attachments.Add ANEXO1
End If

If ANEXO2 <> "" Then
    .attachments.Add ANEXO2
End If

If ANEXO3 <> "" Then
    .attachments.Add ANEXO3
End If

If ANEXO4 <> "" Then
    .attachments.Add ANEXO4
End If

email_envio.Send
End With
MsgBox "Email Enviado"

Unload Me

End Sub

Private Sub UserForm_Click()

End Sub

16. Looping Objetos do Formulário

for each OBJ in UserForm.Controls
if obj.Tag = "nome" then
next obj

17. Tratamento de Erros

On Error Resume Next 'Em caso de erro, continue o código

On error goto line0 'Em caso de erro, vá para line0

18. Salvar na Mesma Pasta

Thisworkbook.path

19. Código de Formatação para Milhares e Milhões

[>999999] 0,0.."M";[>999] 0,0."K";0,0

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *