Arquivo da tag: Excel

VBA – Carregando uma Imagem no UserForm

Está aí uma dúvida mais comum do que esperava. Carregar uma imagem num UserForm (ou planilha se preferir)? Siga os passos abaixo:

Abra o VBA (Alt+F11 com o Excel aberto)

Insira um UserForm:

Insira um UserForm
Insira um UserForm

Insira um controle de imagem no UserForm:

Insira um controle de imagem no UserForm
Insira um controle de imagem no UserForm

Arraste um botão de comando logo abaixo da Imagem:

Arraste um botão de comando logo abaixo da Imagem
Arraste um botão de comando logo abaixo da Imagem

Selecione o botão e na caixa de propriedades (clique em F4 se ela não estiver aparecendo), mude o texto do botão (Caption):

Selecione o botão e na caixa de propriedades mude o texto do botão
Selecione o botão e na caixa de propriedades mude o texto do botão

Clique duas vezes no botão para gerar o evento de Click:

Clique duas vezes no botão para gerar o evento de Click
Clique duas vezes no botão para gerar o evento de Click

E finalmente, o código:

Private Sub CommandButton1_Click()
    caminhoArquivo = Application.GetOpenFilename(FileFilter:="Image Files(*.jpg), *.jpg")
    Me.Image1.Picture = LoadPicture(caminhoArquivo)
End Sub

Execute o UserForm clicando em F5 e ao clicar no botão “Buscar Imagem”, você será apresentado a uma tela de escolha de arquivo como essa (já filtrando por arquivos de imagem. Reparei no filtro feito no código na linha 2):

Selecionando sua imagem
Selecionando sua imagem

Após selecionar a imagem, o resultado será parecido com este:

O resultado
O resultado

O mais atentos saberão que o código contém um bug. Se quiser saber a resposta, veja este link.

Arquivo: Carregar_Imagem_UserForm

Em vídeo!

Bom proveito!

Embelezando sua fórmula no Excel

A internet é um lugar lindo, principalmente para quem busca coisas lindas.

Viagens a parte, o que significa embelezar sua fórmula no Excel? Não, ela não ficará mais bonita. Ela nem vai mudar, mas, vai ficar muito mais fácil de você entendê-la. Vamos pegar esse post recente deste honorável blog como cobaia. A fórmula do artigo é esta:

=SE(A2="";"";CONCAT(EXT.TEXTO(A2;1 + NÚM.CARACT(A2)-LIN(INDIRETO("1:" & NÚM.CARACT(A2)));1)))

É até simples, mas, e se ela fosse apresentada de outra forma?

=SE(
    A2 = "";
    "";
    CONCAT(
        EXT.TEXTO(
            A2;
            1 +
            NÚM.CARACT(
                A2
            ) -
            LIN(
                INDIRETO(
                    "1:" &
                    NÚM.CARACT(
                        A2
                    )
                )
            );
            1
        )
    )
)

Não sei você, mas se você estiver procurando algum erro, ou querendo isolar um pedaço da fórmula, ou mesmo tentando entendê-la melhor, é muito mais simples se ela estiver formatada como acima. Quem faz esse mágica é o site Excel Formula Beautifier. Ele está disponível somente em inglês, mas deixa que você configure o separador de fórmulas para ser o “;” ou invés do “,” do Excel em inglês.

Veja como fica a fórmula deste artigo “embelezada”:

Tive que reduzir o zoom da página para caber
Tive que reduzir o zoom da página para caber

Muito além do Excel

Só de fazer o que faz e ser de graça, já vale a menção. Não bastasse tudo isso, ele converte fórmulas do Excel para expressões linguagens como o C#, Javascript ou Python. Veja o exemplo padrão do site convertido em C#:

Não é feitiçaria, é tecnologia!
Não é feitiçaria, é tecnologia!

Mais ainda, o código da página é aberta e está disponível no github!

Quer mais? A página do autor sobre o assunto lista uma série de projetos na mesma linha de avaliar fórmulas de modo a quebrá-la em partes para um melhor entendimento. Um que me chamou a atenção foi fórmula parser, escrito em C#, também disponível para download.  Veja como ele destrincha uma fórmula do Excel em partes:

Excel Formula Parsing, in C#
Excel Formula Parsing, in C#

Para terminar, lembro que neste vídeo que postei no canal lendo comentários, muitos me perguntaram como colaborar com a comunidade. Esse é um jeito.

Invente o seu!

Excel – Gerando GUIDs sem VBA

Sim, é possível!

Para você que nunca ouviu falar, um GUID (se já sabe ou não quer saber, vá para o final do artigo) ou Identificador Universal Único (do inglês Global Unique IDentifier) é uma valor de 128 bits representado por uma cadeia de texto de caracteres alfa numéricos. Mas pra que isso?

Há varias razões para você querer um identificador desse tipo. Lhe darei estas:

  • Um identificador único dentro de um contexto ou universo que seja difícil de repetir
  • Um identificador que seja difícil de memorizar
  • Um identificador que em nada se relacione com o que ele está identificando

Poderia citar outras. O fato é que uma hora ou outra, ele se tornará interessante para você algum dia. Então, porque não gerá-lo no Excel? Sim, é possível. A fórmula não é simples, mas você não precisa dominá-la, só saber que existe e fazer proveito:

=CONCATENAR(DECAHEX(ALEATÓRIOENTRE(0;4294967295);8);"-";DECAHEX(ALEATÓRIOENTRE(0;42949);4);"-";DECAHEX(ALEATÓRIOENTRE(0;42949);4);"-";DECAHEX(ALEATÓRIOENTRE(0;42949);4);"-";DECAHEX(ALEATÓRIOENTRE(0;4294967295);8);DECAHEX(ALEATÓRIOENTRE(0;42949);4))

É bem isso mesmo, mas funciona! É claro que não tirei isso do nada. Este post no stackoverflow dá a dica. E mais, coloca a fórmula em vários outros idiomas!

Em inglês:

=CONCATENATE(DEC2HEX(RANDBETWEEN(0,4294967295),8),"-",DEC2HEX(RANDBETWEEN(0,42949),4),"-",DEC2HEX(RANDBETWEEN(0,42949),4),"-",DEC2HEX(RANDBETWEEN(0,42949),4),"-",DEC2HEX(RANDBETWEEN(0,4294967295),8),DEC2HEX(RANDBETWEEN(0,42949),4))

Em espanhol:

=CONCATENAR(
DEC.A.HEX(ALEATORIO.ENTRE(0,4294967295),8),"-",
DEC.A.HEX(ALEATORIO.ENTRE(0,65535),4),"-",
DEC.A.HEX(ALEATORIO.ENTRE(16384,20479),4),"-",
DEC.A.HEX(ALEATORIO.ENTRE(32768,49151),4),"-",
DEC.A.HEX(ALEATORIO.ENTRE(0,65535),4),
DEC.A.HEX(ALEATORIO.ENTRE(0,4294967295),8)
)

Em francês:

=CONCATENER(
DECHEX(ALEA.ENTRE.BORNES(0;4294967295);8);"-";
DECHEX(ALEA.ENTRE.BORNES(0;42949);4);"-";
DECHEX(ALEA.ENTRE.BORNES(0;42949);4);"-";
DECHEX(ALEA.ENTRE.BORNES(0;42949);4);"-";
DECHEX(ALEA.ENTRE.BORNES(0;4294967295);8);
DECHEX(ALEA.ENTRE.BORNES(0;42949);4))

Em alemão (feio demais, eu sei):

=KLEIN(VERKETTEN(DEZINHEX(ZUFALLSBEREICH(0;POTENZ(16;8));8);"-";DEZINHEX(ZUFALLSBEREICH(0;POTENZ(16;4));4);"-";"4";DEZINHEX(ZUFALLSBEREICH(0;POTENZ(16;3));3);"-";DEZINHEX(ZUFALLSBEREICH(8;11));DEZINHEX(ZUFALLSBEREICH(0;POTENZ(16;3));3);"-";DEZINHEX(ZUFALLSBEREICH(0;POTENZ(16;8));8);DEZINHEX(ZUFALLSBEREICH(0;POTENZ(16;4));

Em holandês:

=KLEINE.LETTERS(TEKST.SAMENVOEGEN(DEC.N.HEX(ASELECTTUSSEN(0;MACHT(16;8));8);"-";DEC.N.HEX(ASELECTTUSSEN(0;MACHT(16;4));4);"-";"4";DEC.N.HEX(ASELECTTUSSEN(0;MACHT(16;3));3);"-";DEC.N.HEX(ASELECTTUSSEN(8;11));DEC.N.HEX(ASELECTTUSSEN(0;MACHT(16;3));3);"-";DEC.N.HEX(ASELECTTUSSEN(0;MACHT(16;8));8);DEC.N.HEX(ASELECTTUSSEN(0;MACHT(16;4));4)))

Ufa! Se precisar da fórmula em mais algum idioma, bem… se vira aí!

😉

Evento – Microsoft Excel: Aplicações e Produtividade, Quatro abordagens do uso da ferramenta

Fiquei sabendo da notícia hoje. Quatro gigantes da comunidade do brasileira de Excel se apresentarão num evento que ocorrerá no mês de Março em São Paulo, capital. Mais detalhes folder abaixo:

Microsoft Excel Aplicacoes Produtividade 2018

Ninguem mais ninguém menos do que Alessandro Trovato, Derlidio Siqueira, Fernando Fernandes e Luis Gustavo Serra estão presentes para fazer o que sabem melhor, falar de Excel e VBA!

Mais dados do evento:

Inscrições (valores e forma de pagamento): palestras-excel.eventbrite.com.br

Data: 31 de março de 2018, das 08:00 às 13:00.

Local: Espaço Maestro, R. Maestro Cardim, 1170 – Paraíso  – São Paulo / SP (próximo estação Paráiso do Metrô)