Views

...

Important:

Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog podem ser tratados como consultoria freelance.

E-mails

Deixe seu e-mail para receber atualizações...

eBook Promo

VBA: Função que retorna idade.

|Blog Office VBA |Blog Excel |Blog Access |

Dashboards & Scorecards


Como retornar a idade a partir da data do Nascimento?

Public Function AnosdeIdade(ByVal datBirthDate As Date) As Integer

On Error GoTo PROC_ERR

Dim intYears As Integer

Let intYears = Year (Now) - Year (datBirthDate)

If DateSerial(Year(Now), Month(datBirthDate), Day(datBirthDate)) > Now Then
Let intYears = intYears - 1 ' Subtract a year if birthday hasn't arrived this year
End If

Let AnosdeIdade = intYears

PROC_EXIT:
Exit Function

PROC_ERR:
MsgBox "Erro: Nº" & Err.Number & ". " & Err.Description, , "AnosdeIdade"

Resume PROC_EXIT
End Function
Dash-006.jpg  Dash-018.jpg  Dash-028.jpg

VBA Excel - Deletando linhas Duplicadas

Visite também: | Blog Office VBA | Blog Excel | Blog Access    |

Esta função eliminará todas as linhas duplicadas em um intervalo.

Para usá-la, selecione um intervalo de uma única coluna de células, compreendendo o intervalo de linhas a partir da qual são duplicados a ser excluído, por exemplo, C2:C99. Os valores da coluna selecionada serão comparados para determinar se uma linha tem duplicatas.

Linhas inteiras não são comparadas umas contra as outras. Apenas a coluna selecionada é utilizada para comparação.

Quando forem encontrados valores duplicados na coluna, a primeira linha continua, e todas as linhas subseqüentes são excluídas.

Public Sub DeleteDuplicateRows()
Dim R As Long
Dim N As Long
Dim V As Variant
Dim Rng As Range

On Error GoTo EndMacro
Let Application.ScreenUpdating = False
Let Application.Calculation = xlCalculationManual

Set Rng = Application.Intersect(ActiveSheet.UsedRange, _
                    ActiveSheet.Columns(ActiveCell.Column))

Let Application.StatusBar = "Processando as linhas: " & Format(Rng.Row, "#,##0")

Let N = 0

For R = Rng.Rows.Count To 2 Step -1
If R Mod 500 = 0 Then
    Application.StatusBar = "Processando as linhas: " & Format(R, "#,##0")
End If

Let V = Rng.Cells(R, 1).Value

If V = vbNullString Then
    If Application.WorksheetFunction.CountIf(Rng.Columns(1), vbNullString) > 1 Then
        Rng.Rows(R).EntireRow.Delete

       
Let N = N + 1
    End If
Else
    If Application.WorksheetFunction.CountIf(Rng.Columns(1), V) > 1 Then
        Rng.Rows(R).EntireRow.Delete

       
Let N = N + 1
    End If
End If
Next R

EndMacro:

Let Application.StatusBar = False
Let Application.ScreenUpdating = True
Let Application.Calculation = xlCalculationAutomatic

MsgBox "Linhas Duplicadas foram Deletadas: " & CStr(N)

End Sub


Source

Caso queira implementar soluções às suas planilhas ou aplicações MS Access, contacte-me: bernardess@gmail.com

InAnyPlace03.gif

VBA Excel - Como fechar as planilhas ou pastas do MS Excel com VBA

Veja também: | Blog Office VBA | Blog Excel | Blog Access    |

Existem algumas formas de fecharmos a 
aplicação MS Excel que estivermos
utilizando no momento.

Seguem alguns exemplos:

Fechará o WorkBook que estiver ativo...
ActiveWorkbook.Close savechanges:=False 'ou True

Fechará a planilha Bernardes.xls...
Workbooks("Bernardes.xls").Close savechanges:=False 'ou True

Fechará o WorkBook cujo o código estiver executando... 
ThisWorkbook.Close savechanges:=False 'ou True

Tenha cuidado com esta opção, pois esta fechará a planilha...
Application.Quit

VBA Excel - Dê uma pausa na sua aplicação.


| Blog Office VBA | Blog Excel | Blog Access    |

Caso deseje implementar algum efeito em um formulário, planilha e/ou procedimento poderá utilizar a linha abaixo:
Application.Wait ("00:00:02")

Caso deseje que a pausa seja efetuada em determinado momento ou hora poderá melhorar o código abaixo:
Application.Wait (Now() + "00:00:02")

Pequenas dicas, mas com criatividade, pode lhe render grandes soluções. Até mais!

Excel - 4 Modos de aumentar o tempo da velocidade dos cálculos nas suas planilhas.


Quando nossas planilhas criadas no MS Excel calculam (o que é muito comum), em geral, efetuando referências a células e a operações de cálculo, estas comportam-se como verdadeiros parasitas que se apropriam do desempenho principal da planilha como um todo.

Fórmulas razoável e até grandes quantidades de dados não costumam tornar as coisas devagar. Fórmulas complexas e referências repetitivas são os verdadeiros culpados.

Aqui estão algumas orientações básicas que devem ajudá-lo a evitar estrangulamentos cálculo:


- Evite fórmulas complexas de matriz. Utilize mais as linhas e colunas para armazenar valores intermédios e utilize menos os cálculos complexos.

- Reduza o número de referências em cada uma fórmula para o mínimo. Fórmulas copiadas são notórias para repetir referências e cálculos. Mova todos os necessários cálculos repetidos para uma única célula a qual fará referências.

-
Sempre utilize a função do modo mais eficiente possível: Classifique os dados antes de realizar pesquisas; minimize o número de células para as funções SOMA e SUMIF; Substitua uma matriz lenta por uma função definida pelo usuário (desenvolvida em VBA), e assim por diante.

- Se possível, evite funções voláteis. O
MS Excel recalcula estas funções em cada novo cálculo, mesmo que nada tenha mudado. As funções voláteis (RAND (), NOW (), HOJE (), e assim por diante) podem retardar as coisas.

?ui=2&view=att&th=1273db8968a96d1d&attid=0.1&disp=attd&realattid=ii_1273db8968a96d1d&zw

Utilize a excelência em ferramentas de análise!

?ui=2&view=att&th=127250ccb711690b&attid=0.1&disp=attd&realattid=ii_127250ccb711690b&zw
Utilize a excelência em ferramentas de análise!

Várias empresas estão cercadas de dados de diversas origens distintas e apesar de terem tantos dados à disposição não conseguem obter as necessárias informações para tomar as suas mais relevantes decisões. Não raro seus KPIs (Indicadores de Performance) não estão alinhados com as estratégias da empresa.

A diversidade de bases de dados nas quais as informações que deseja podem estar são muito variáveis. Mesmo que precise consolidar tais informações em Dashboards e Scorecards, precisará reuní-los de modo coerente e sucinto.

Os Balanced Scorecards oferecem aos executivos as ferramentas que necessitam para alcançar o sucesso na obtenção de suas informações. Esta importante ferramenta traduz a missão e a estratégia da sua empresa num conjunto abrangente de medidas de desempenho que serve como base para o sistema de medição e gestão estratégica. Perseguindo os objetivos financeiros, incluindo os vetores de desempenho desses objetivos.

O grande dilema é: Mesmo estando cercado por dados de todas as origens, como posso  obter INFORMAÇÕES relevantes para tomar minhas decisões?

Os conceitos e as regras de negócio precisam ser aplicados aos dados de modo a atender a empresa como um TODO e não apenas a alguns departamentos e países.

Os resultados mais comuns são INFORMAÇÕES IMPRECISAS, números que não coicidem durante as reuniões, findando pelo adiamento de decisões altamente relevantes.

Para que a Direção da empresa possa tomar decisões abalizadas, torna-se imprescindível que o conteúdo seja coeso, sintético e direcionado para atender o foco das reuniões.

O Management Information System é um Sistema de Informação Gerencial, utilizado por toda a organização, consiste na rede de canais de comunicação da organização permeando todas as estruturas executivas. É composto por todos os componentes que recolhem, manipulam e disseminam as informações. Nele estão inclusos hardware, software, pessoas, sistemas de telecomunicação, e os dados propriamente ditos.

Não é menos verdade que em muitas reuniões todos estejam munidos de INFORMAÇÕES totalmente irrelevantes. Têm acesso a dados de A a Z, completamente desprovidos de conteúdo. Não contém abrangência nem diversificação, que lhes propiciem dinamicidade na análise.


?ui=2&view=att&th=127250b2ba75d641&attid=0.1&disp=attd&realattid=ii_127250b2ba75d641&zw

VBA: Obtenha o tamanho de arquivo em Kilobytes

Leia também: | Blog Office VBA | Blog Excel | Blog Access    |

Para aqueles que acompanham com precisão o tamanho dos arquivos (talvez planilhas) que estão sendo geradas por suas aplicações de automação, segue função muito útil para identificar o tamanho destes.

Mensure exatamente o tamanho dos arquivos e talvez até mesmo direcione, ou compacte-os quando necessário.

Function
GetTheSize()
  Dim sFilePath As String

  Let sFilePath = "C:\CV\AndreLuizBernardes.doc"

  GetTheFileSize (sFilePath) & " Kb"
End Function

Public Function GetTheFileSize(sPath As String) As Long
  Dim iChannel As Integer

  Let iChannel = FreeFile

  Open
sPath For Input As iChannel

  Let GetTheFileSize = Format((LOF(iChannel) / 1024), "#.0")
End Function

FONTE: http://www.vbaexpress.com/kb/getarticle.php?kb_id=624

Lembre-se que esta solução retorna o tamanho de qualquer arquivo. Poderá utilizá-la até mesmo para averiguar se os seus arquivos não foram alterados sem a sua permissão. Divirta-se!

Access 2007 Quick Reference Card - Download

Veja também: Blog Office VBA | Blog Excel | Blog Access  
     Meu perfil: André Luiz Bernardes

Download Microsoft Access 2007 Quick Reference Card

Access 2007 Quick Reference Card

Veja também: Blog Office VBA | Blog Excel | Blog Access  
     Meu perfil: André Luiz Bernardes



?ui=2&view=att&th=126fc0c4953242d9&attid=0.1&disp=attd&realattid=ii_126fc0c4953242d9&zw
Access 2007 Quick Reference Card


0a5b15e7c5.jpg

Office 2007 Quick Reference Card

Veja também: Blog Office VBA | Blog Excel | Blog Access  
     Meu perfil: André Luiz Bernardes


f3f3265ffc.jpg

PowerPoint 2007 Quick Reference Card

Veja também: Blog Office VBA | Blog Excel | Blog Access  
     Meu perfil: André Luiz Bernardes


PowerPoint 2007 Quick Reference Card

0ce9acd1ce.jpg


OneNote 2007 Quick Reference Card

Veja também: Blog Office VBA | Blog Excel | Blog Access  
     Meu perfil: André Luiz Bernardes


?ui=2&view=att&th=126fbf08a8886a76&attid=0.1&disp=attd&realattid=ii_126fbf08a8886a76&zw
OneNote 2007 Quick Reference Card

31793c996f.jpg

Download OneNote 2007 Quick Reference Card

Excel 2007 Quick Reference Card

Veja também: Blog Office VBA | Blog Excel | Blog Access  
     Meu perfil: André Luiz Bernardes

?ui=2&view=att&th=126fbecf5aa36d89&attid=0.1&disp=attd&realattid=ii_126fbecf5aa36d89&zw
Baixe o Excel 2007 Quick Reference Card

1162a8e815.jpg

InfoPath 2007 Quick Reference Card

Veja também: Blog Office VBA | Blog Excel | Blog Access  
     Meu perfil: André Luiz Bernardes

?ui=2&view=att&th=126fbe7f6ea6df90&attid=0.1&disp=attd&realattid=ii_126fbe7f6ea6df90&zw
Baixe o QRC do InfoPath

c7b481d244.jpg

Publisher 2007 Quick Reference Card

Veja também: Blog Office VBA | Blog Excel | Blog Access  
     Meu perfil: André Luiz Bernardes


?ui=2&view=att&th=126fbe32d84c949e&attid=0.1&disp=attd&realattid=ii_126fbe32d84c949e&zw
Tenha também um QRC para o MS Publisher 2007

d20b787948.jpg

Download Publisher 2007 Quick Reference Card

Word 2007 Quick Reference Card - Download

Veja também: Blog Office VBA | Blog Excel | Blog Access  
     Meu perfil: André Luiz Bernardes

Download Word 2007 Quick Reference Card

Word 2007 Quick Reference Card

Veja também: Blog Office VBA | Blog Excel | Blog Access  
     Meu perfil: André Luiz Bernardes

O editor de texto MS Word é um dos mais utilizados no mundo para criar documentos. Ter em mãos várias referências rápidas aos principais comandos, certamente será de grande ajuda.

a4d5aceb3e.jpg

Outlook 2007 Quick Reference Card

Veja também: Blog Office VBA | Blog Excel | Blog Access  
     Meu perfil: André Luiz Bernardes

Imprimir e plastificar um Quick Reference é sempre legal. Também podemos enviar para nossos amigos e conhecidos para que tenham mais agilidade ao trabalhar no dia-a-dia.

7589860e74.jpg

SharePoint 2007 Quick Reference Card

Veja também: Blog Office VBA | Blog Excel | Blog Access  
     Meu perfil: André Luiz Bernardes


Ter um cartão de Quick Reference à mão é sempre importante...

df41d03cb1.jpg

Download SharePoint 2007 Quick Reference Card

Developer Map for the 2007 Microsoft Office System


Atualize-se também com este Developer Map.

516d2a198d.gif

Download Developer Map for the 2007 Microsoft Office System

Microsoft Office Info Path 2007 Managed Object Model

Não existe nada melhor do que estarmos orientados, não é mesmo.

Baixe este diagrama e utilize-o no desenvolvimento das suas aplicações.

393fe4340c.jpg

Baixe aqui...

Mapa do Desenvolvedor para o MOS (Microsoft Office System) 2007


O MOS (Microsoft Office System) é um conjunto completo de aplicações clientes, servidores e serviços que fornece às empresas os meios para criar, gerenciar e aprimorar soluções de negócios.

Às vezes é difícil entender o todo e como todas as peças pequenas (características e especificidades dos produtos) podem trabalhar em conjunto para ajudar a construir uma solução no mundo real.

O MS Office é uma enorme família de produtos e tecnologias e tenho trabalhado com várias equipes de diversos produto para criar um mapa geral que ajude os desenvolvedores a entender como visualmente todas as peças do quebra-cabeça se relacionam entre si, mas mais importante ainda, fornecer informações de onde no MSDN, você poderá encontrar documentação técnica relacionada com características específicas. Fez-se um esforço para aproximar os espaços, os membros das classes, e os esquemas de cada produto para enumerá-los todos juntos em um único lugar.

Tenho encontrado uma grande maneira de resumir as idéias mais relevantes, ajustando e relacionando os mais de 25 produtos e tecnologias juntos.

Segue uma pequena versão do mapa do tesouro. Esse diagrama conceitual, desenvolvido com o MS PowerPoint 2007, gerou um mapa de imagem que oferece links para lugares no MSDN e Microsoft.com. Pode passar o mapa em drill-down para encontrar informações detalhadas de cada produto e tecnologia.

Esta é uma versão pequena, assim que tiver acesso, disponibilizo o mapa do tesouro completo.


2007MicrosoftOfficeSystem.gif

VBA - Funções para lidar com Nomes

Tratar os nomes que encontramos em várias bases de dados no decorrer da nossa vida de desenvolvedores é muito bom quando já temos algumas coisas resolvidas.

Seguem algumas coisas para guardarem em suas bibliotecas...

SEPARANDO O PRIMEIRO NOME:
Function ReturnName(nFrase As Variant) As String
    ' Author:                     Date:               Contact:                 URL:
    ' André Bernardes             10/02/2010 12:31    bernardess@gmail.com     http://al-bernardes.sites.uol.com.br/
    ' Retorna o primeiro nome a partir de uma frase com o nome completo.
   
    Dim DetectedSpace As Integer
    Dim LenFrase As Integer
   
    Let DetectedSpace = InStr(1, nFrase, " ")
    Let LenFrase = Len(nFrase) - DetectedSpace + 1
    Let ReturnName = Trim(Left(nFrase, DetectedSpace))
End Function
 
SOMENTE O SOBRENOME:
Function ReturnSobreNome(nFrase As Variant) As String
    ' Author:                     Date:               Contact:                 URL:
    ' André Bernardes             09/02/2010 15:20    bernardess@gmail.com     http://al-bernardes.sites.uol.com.br/
    ' Retorna o primeiro nome a partir de uma frase com o nome completo.
   
    Dim DetectedSpace As Integer
    Dim LenFrase As Integer
   
    Let DetectedSpace = InStr(1, nFrase, " ")
    Let LenFrase = Len(nFrase) - DetectedSpace + 1
    Let ReturnSobreNome = Trim(Mid(nFrase, DetectedSpace, LenFrase))
End Function
 
CAPITALIZE: TORNANDO AS PRIMEIRAS LETRAS DOS NOMES COMO MAIÚSCULAS:
Function CaptalizeWords(pvarText As Variant) As Variant
    ' Author:                     Date:               Contact:                 URL:
    ' André Bernardes             11/02/2010 09:24    bernardess@gmail.com     http://al-bernardes.sites.uol.com.br/
    ' Retorna as primeiras letras de quaiquer palavras como maiúsculas.
   
    If IsNull(pvarText) Then
        CaptalizeWords = Null
    Else
        CaptalizeWords = StrConv(pvarText, vbProperCase)
    End If
End Function
 
 
Twitter:
@officespecialis
@brzexceldevelop
@brzaccessdevel
 
Veja também:
Blog Office VBA
 
Implemente Dashboards & Scorecards nas suas aplicações MS Excel, MS Access, MS Powerpoint:
 
?ui=2&view=att&th=126bcf41746829d7&attid=0.1&disp=attd&realattid=ii_126bcf41746829d7&zw  ?ui=2&view=att&th=126bcf46cd1064c1&attid=0.1&disp=attd&realattid=ii_126bcf46cd1064c1&zw  ?ui=2&view=att&th=126bcf4bcd67f0c7&attid=0.1&disp=attd&realattid=ii_126bcf4bcd67f0c7&zw  ?ui=2&view=att&th=126bcf533fac9860&attid=0.1&disp=attd&realattid=ii_126bcf533fac9860&zw
 
?ui=2&view=att&th=126bcf5b564427c1&attid=0.1&disp=attd&realattid=ii_126bcf5b564427c1&zw  ?ui=2&view=att&th=126bcf63f7ee8f2f&attid=0.1&disp=attd&realattid=ii_126bcf63f7ee8f2f&zw  ?ui=2&view=att&th=126bcf68bd3c3711&attid=0.1&disp=attd&realattid=ii_126bcf68bd3c3711&zw  ?ui=2&view=att&th=126bcf7689e2c657&attid=0.1&disp=attd&realattid=ii_126bcf7689e2c657&zw

 

A&A: Feedback - Escondendo o MS Excel - Dúvida.

Olá Daniel,
Boa tarde.
 
Primeiramente gostaria de agradecê-lo pelo contato. Acha
que poderia retornar-me dizendo onde teve acesso ao meu e-mail ?
 
Bem, desenvolvo soluções VBA com o MS Excel, MS Access,
 
Caso deseje soluções, mesmo que parciais, ou em módulos,
bastará que me consulte.
 
Bem, você não chegou a informar qual a versão do MS Office
está usando, portanto uma solução genérica lhe será útil, tente:
 
                Application.Visible = False
 
 
Para escondê-lo, fazendo-o reaparecer após algum tempo:
Public Sub HideMyExcel()
           Let Application.Visible = False

           Application.Wait Now + TimeValue("00:00:05")
           Let Application.Visible = True
End Sub
Escondendo o MS Excel e abrindo o formulário:
Public Sub HideShow()
          Let Application.Visible = False
 
          Seuformulário.Show

           Let Application.Visible = True
End Sub
 
Detalhe: tenha certeza que tornoua sua aplicação MS Excel visível novamente antes de fechar o formulário.
(Estou postando sua dúvida em meu blog para que outros também possam beneficiar-se da sua pergunta)
 
Não deixe de ler os Blogs:
 

André Luiz Bernardes
A&A - WORK, DON´T PLAY!
http://al-bernardes.sites.uol.com.br/
bernardess@gmail.com

Twitter: @officespecialis
             @brzexceldevelop
             @brzaccessdevel

Esta mensagem pode conter informação confidencial e/ou privilegiada. Se você não for o destinatário ou a pessoa autorizada a receber esta mensagem, não pode usar, copiar ou divulgar as informações nela contidas ou tomar qualquer ação baseada nessas informações. Se você recebeu esta mensagem por engano, por favor avise imediatamente o remetente, respondendo o e-mail e em seguida apague-o. Agradecemos sua cooperação.
 
2010/2/8 <daniel.teixeira@wartsila.com>

Prezado Bernardes,

Eu trabalho em uma empresa de motores navais e fiz uma aplicação em VBA no EXCEL e gostaria de tirar uma duvida:

Como faço para esconder o EXCEL e mostrar para o usuario somente o FORM que eu desejo?

Obrigado pela atenção.

Daniel Teixeira da Silva

Automation Technician

Wartsila Brasil

R. São Luiz Gonzaga, 354 - São Cristóvão

CEP: 20910-060 - Rio de Janeiro/RJ - Brasil

Phone: +55 21 3878-8900

Mobile: +55 21 86969109

Fax: +55 21 3878-8925

daniel.teixeira@wartsila.com

LIVROS - Lista de sugestões para enriquecer o seu conhecimento sobre VBA

Dez vez em quando me solicitam sites, blogs, revistas, livros, artigos, algum material PDF, exemplos de aplicações, etc...Sobre programação VBA. E olha que o material é estenso hein! Vai desde o nosso MS Word, até o universo do CAD.

Sempre acreditei na leitura de livros como fonte enriquecedora de conhecimento. Compro-os para guardá-los, prestigiar os autores e comparar a evolução destes no decorrer das décadas. Ainda gosto do velho modelo do livro de papel com as suas exceções que são acompanhadas de um DVD-ROM repleto de exemplos.

Mas não me restrinjo a aprender apenas nos livros. Fora as publicações em livros tenho como fonte de pesquisa a amizade com alguns MVPs ao redor do mundo. Estes também são fonte inestinguível de conhecimento sobre a Microsoft (Pasmem! Alguns sabem mais sobre certos produtos do que alguns da própria Microsoft).

Outro recurso valioso são os Blogs ao redor do mundo, existem diversos e quando digo diversos refiro-me a sites em espanhol, alemão, francês, inglês, japonês, chinês, etc...Basta procurar por VBA no Twitter (Viva ao Google Translator!).

Costumo publicar alguns artigos nestes ao redor do mundo também, pois a troca é importantíssima para o enriquecimento da comunidade.

Não acredito em guardar segredos sobre técnicas de programação, compartilhar é o melhor para todos. Tornar uma saída pública é o melhor para todos. Resulta em darmos rapidamnte soluções aos nossos clientes. Divulga o ambiente de desenvolvimento que trabalhamos e mantém viva a linguagem que persistimos em nos aprofundar no decorrer dos anos.

Após vasculhar minhas prateleiras e fazer algumas buscas aqui e ali, estou compartilhando alguns títulos de livros (Ainda bem que os achei todos no mesmo lugar).

Lista de sugestões para enriquecer o seu conhecimento sobre VBA:

 
EXCEL VBA für Maschinenbauer by Harald Nahrstedt
 
Office 2007 Bible by John Walkenbach, Herb Tyson, Faithe Wempen, and Cary N. Prague
 
 
Microsoft Outlook 2007 Bible by Peter G. Aitken
 
 
 
 
Excel Für Controller by Wolfram E. Mewes
 
Office VBA Macros You Can Use Today: Over 100 Amazing Ways to Automate Word, Excel, PowerPoint, Outlook, and Access by Juan Pablo Gonzalez, Cindy Meister, Suat Ozgur, and Bill Dilworth (Paperback - Jan. 1, 2006)
 
 
 
 
 

VBA for Modelers: Developing Decision Support Systems with Microsoft® Office® Excel (with Premium Online Content Printed Access Card) by S. Christian Albright

 
Continue aprendendo em:
 
 

eBooks VBA na AMAZOM.com.br

LinkWithinBrazilVBAExcelSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine