|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
✔ VBA Excel Specialist® - 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. Contate-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.
Views
...
Important:
E-mails
eBook Promo
VBA: Função que retorna idade.
VBA Excel - Deletando linhas Duplicadas
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
VBA Excel - Como fechar as planilhas ou pastas do MS Excel com VBA
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.
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.
VBA: Obtenha o tamanho de arquivo em Kilobytes
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
Meu perfil: André Luiz Bernardes
Access 2007 Quick Reference Card
PowerPoint 2007 Quick Reference Card
Meu perfil: André Luiz Bernardes
PowerPoint 2007 Quick Reference Card
OneNote 2007 Quick Reference Card
Meu perfil: André Luiz Bernardes
OneNote 2007 Quick Reference Card
Download OneNote 2007 Quick Reference Card
Excel 2007 Quick Reference Card
Meu perfil: André Luiz Bernardes
Baixe o Excel 2007 Quick Reference Card
InfoPath 2007 Quick Reference Card
Meu perfil: André Luiz Bernardes
Baixe o QRC do InfoPath
Publisher 2007 Quick Reference Card
Meu perfil: André Luiz Bernardes
Tenha também um QRC para o MS Publisher 2007
Download Publisher 2007 Quick Reference Card
Word 2007 Quick Reference Card
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.
Outlook 2007 Quick Reference Card
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.
SharePoint 2007 Quick Reference Card
Meu perfil: André Luiz Bernardes
Ter um cartão de Quick Reference à mão é sempre importante...
Download SharePoint 2007 Quick Reference Card
Developer Map for the 2007 Microsoft Office System
Atualize-se também com este Developer Map.
Download Developer Map for the 2007 Microsoft Office System
Microsoft Office Info Path 2007 Managed Object Model
Baixe este diagrama e utilize-o no desenvolvimento das suas aplicações.
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.
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...
' 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
' 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
' 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
@brzexceldevelop
@brzaccessdevel
Blog Office VBA
A&A: Feedback - Escondendo o MS Excel - Dúvida.
Let Application.Visible = False
Application.Wait Now + TimeValue("00:00:05")
End Sub
Let Application.Visible = True
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.
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.
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
LIVROS - Lista de sugestões para enriquecer o seu conhecimento sobre VBA
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:
VBA for Modelers: Developing Decision Support Systems with Microsoft® Office® Excel (with Premium Online Content Printed Access Card) by S. Christian Albright