Feed Artigos Comentários

Dicas de softwares & Excel & VBA para Excel Carlos César Tanaka em 10 Jun 2009

Procura Vertical (PROCV) com imagens

A função de procura vertical (PROCV ou VLOOKUP em inglês) está entre as mais usadas no Excel, isso se deve ao fato de frequentemente organizarmos informações em tabelas e precisarmos localizar e extrair algum dado específico.
A função PROCV extrai qualquer tipo de dado que esteja em uma célula, mas e se precisarmos extrair uma imagem? Ou seja, se quisermos procurar por um item e depois visualizar a imagem correspondente? Como exemplo, imagine que possuímos uma tabela que possua as informações de nossos clientes e como a tabela é extensa, ficaria muito prático se ao selecionarmos um cliente pudéssemos ver a foto desse cliente.
As células do Excel não armazenam nem exibem imagens, porém como as imagens são arquivos de computador, podemos armazenar o caminho das imagens nas células, ou seja a sua localização em disco, conforme mostrada na figura abaixo.

tabela de dados - tabela de dados

Colocamos esses dados numa planilha chamada Tabela. Nessa tabela simplificada, temos uma coluna Número, que pode ser o número de cadastro do cliente, o campo Nome - nome completo do cliente, e a coluna Caminho, que é a localização do arquivo de imagem com a foto do cliente. Neste exemplo, haverá uma pasta Imagem no drive C:, com todas as fotos dos clientes, o que torna bastante simples a organização e como os arquivos de imagem não foram incorporados na planilha do Excel, ela ficará muito leve.

Além da planilha com os dados onde serão feitas as pesquisas, criamos uma planilha chamada Principal, onde será efetuada a pesquisa, ou seja, onde usaremos a função PROCV. Ela terá a seguinte aparência.

principal - principal

onde:
> As células A1:A4 são apenas descrições
> A célula B1 é o local onde digitaremos o número do cliente, para que sejam exibidos o nome e a imagem do mesmo.
> A célula B2 possui uma simples busca pelo nome do clinte com a seguinte fórmula: =PROCV(Principal!B1;Tabela!$A$4:$C$9;2;FALSO)
> A célula B3 possui a busca pelo caminho da imagem. A fórmula é: =PROCV(Principal!B1;Tabela!$A$4:$C$9;3;FALSO)

Relembrando, as células do Excel não exibem imagens, então precisaremos de um recurso que faça isso. Escolhemos usar um controle ActiveX, para inseri-lo faça o seguinte:
- Ative a guia do Desenvolvedor (Botão do Office; Opções do Excel; ativar a caixa Mostrar guia Desenvolvedor na Faixa de Opções; OK.
- Na guia desenvolvedor, clique no botão Inserir (ícone de maleta com ferramentas) e clique sobre o controle Imagem (ActiveX);
- Agora desenhe um retângulo, arrastando o cursor do mouse de um vértice até o vértice oposto. O tamanho da imagem pode ser mudado depois através dos círculos em torno desse retângulo.

O local onde será exibida a imagem está pronto, veja o nosso exemplo na figura anterior. Esse controle precisa ser configurado, para isso clique no botão propriedades que está na guia Desenvolvedor. Altere as seguintes propriedades:
(Name) para imgfoto
PictureSizeMode para 1-fmPictureSizaModeStretch

Feche a janela de propriedades e desative o botão Modo de Design na guia Desenvolvedor.

A etapa final é elaborar um pequeno código em VBA para que a imagem seja atualizada sempre que um novo código for digitado. Para isso vá até o editor do VBA através da combinação Alt+F11 e dê um clique duplo na planilha Principal, conforme indicado na figura a seguir:

vbe 1 - vbe 1

Do lado direito haverá uma grande área em branco para inserção de código, copie e cole o seguinte trecho:

Private Sub Worksheet_Change(ByVal Target As Range)
‘Lembrando que target é a referência para a célula modificada

‘verifica se a célula que contém o número do cliente foi modificada
‘Nesse caso é a célula B1
If Target.Row = 1 And Target.Column = 2 Then
‘Carrega imagem de acordo com o caminho indicado na procura vertical
‘A função LoadPicture carrega um caminho de imagem na propriedade Picture
‘O seu uso é necessário
imgfoto.Picture = LoadPicture(Range(”B3″).Value)
End If
End Sub

Feche o editor de VBA e salve a planilha habilitando-a para usar macros: Salvar Como e depois escolher a segunda opção “Pasta de Trabalho habilitada para Macro do Excel”.

Antes de experimentar o sistema, crie uma pasta com o nome Imagens, no drive C: (se for outro local, mude também o caminho na tabela) e copie os arquivos de imagem listados na tabela, como exemplo, eu disponibilizei para download um arquivo compactado com as imagens usadas no exemplo (imagens.zip)

Agora teste o sistema, digitando valores na célula B1 da planilha principal.
(Este exemplo pode ser baixado neste link procura vertical com imagens.xlsm)

Enviar por e-mail  | Hits para esta publicação: 2696

52 comentários para “ Procura Vertical (PROCV) com imagens ”

  1. em 26 de Junho de 2009 @ 00:29 1.Raphael disse:

    Achei excelente a dica. Já testei e consegui fazer com que a idéia funcionasse.

    Estou porém com um problema… Eu quero que a celula alterada (no caso do exemplo acima a B1) esteja em uma planilha diferente da figura.

    Neste caso tanto o comando

    If Target.Row = 1 And Target.Column = 2 Then quanto
    LoadPicture(Range(”B3″).Value)

    devem buscar dados em outra planilha.

    Poderia me auxiliar?

  2. em 5 de Agosto de 2009 @ 14:18 2.O Planilhão disse:

    Muito bom, parabéns.

  3. em 28 de Agosto de 2009 @ 13:18 3.Ivam Medeiros disse:

    Excelente! Passei alguns meses procurando por esta solução. Obrigado.

  4. em 2 de Setembro de 2009 @ 21:36 4.Fernando disse:

    Caramba… não consegui fazer essa planilha.

    Eu copiei e colei o comando no visual basic como vc sugeriu:

    Private Sub Worksheet_Change(ByVal Target As Range)
    ‘Lembrando que target é a referência para a célula modificada

    ‘verifica se a célula que contém o número do cliente foi modificada
    ‘Nesse caso é a célula B1
    If Target.Row = 1 And Target.Column = 2 Then
    ‘Carrega imagem de acordo com o caminho indicado na procura vertical
    ‘A função LoadPicture carrega um caminho de imagem na propriedade Picture
    ‘O seu uso é necessário
    imgfoto.Picture = LoadPicture(Range(”B3″).Value)
    End If
    End Sub

    Dae eu habilito a planilha para macro no excel, mas as fotos não aparecem e quando eu altero o numero do codigo do cliente, o excel vai para a tela do visual basic e aparece uma mensagem “Erro de compilação” “Erro de sintaxe” e a frase “Private Sub Worksheet_Change(ByVal Target As Range)
    ‘Lembrando que target é a referência para a célula modificada” aparece grifada.

    O que está errado? Como fazer a planilha funcionar?

    Muito obrigado pela atenção.

    Abs

  5. em 29 de Setembro de 2009 @ 16:05 5.Carlos Cardoso disse:

    Ola,
    Parabens pelo blog, achei muito util sua explicação para esta materia, já que há tempos tento inserir uma imagem no excel.
    Porem, sou novato no assunto, e estou com problema na hora de criar o codigo em VBA.
    Eu copiei e colei o codigo na area branca, mas ele dá erro de compilação.
    Onde será que estou errando??
    A unica diferença para a minha planilha para a sua se refere as celulas, onde o seu B1=V2 e o seu B3=W1 no meu.
    Preciso alterar mais alguma coisa??
    Se vc puder me ajudar agradeço.
    Abraço

  6. em 26 de Outubro de 2009 @ 19:16 6.Carlos César Tanaka disse:

    Prezado Fernando,

    Percebi que se você copiar e colar o código, os caracteres apóstrofe (’) e aspas (”) são alterados, devido ao tipo de fonte usado no blog.
    Para corrigir isso, depois que você colar o código, redigite todos os apóstrofes e aspas.
    Outra opção é fazer o download dos arquivos originais, indicados na dica.

    Abç.

  7. em 26 de Outubro de 2009 @ 19:21 7.Carlos César Tanaka disse:

    Olá Carlos Cardoso,

    Veja o comentário anterior que fiz para o Fernando.
    Altere as fórmulas que usam a função PROCV das células B2 e W1 para usarem a célula V2 em vez de B1.
    Se isso não resolver, favor enviar mais detalhes sobre a mensagem de erro.

    Abç.

  8. em 26 de Outubro de 2009 @ 19:33 8.Carlos César Tanaka disse:

    Olá Raphael,

    Sua resposta foi enviada por email, mas vou deixar registrado no blog também.
    O código VBA deverá estar na planilha que contém a célula a ser alterada (e não na Principal).
    As fórmulas que contém as Procv, também devem ser ajustadas com o endereço da nova planilha.
    Por último o código VBA deve sofrer uma adaptação, em vez de usar simplesmente:

    imgfoto.Picture = LoadPicture(Range(”B3″).Value)

    Se a sua nova planilha de chamar Teste, use

    imgfoto.Picture = LoadPicture(Sheets(”Teste”).Range(”B3″).Value)

    Abç.

  9. em 19 de Novembro de 2009 @ 08:47 9.Carlos Cardoso disse:

    Olá,
    Realmente não levo jeito para VBA, já tentei tudo o que foi possivel para fazer funcionar meu arquivo mas não tem jeito.
    Há a possibilidade de eu te enviar o arquivo para vc fazer o codigo para mim?
    Desde já agradeço a paciencia e a boa vontade.
    abraço
    Carlos

  10. em 10 de Dezembro de 2009 @ 10:01 10.Átila César disse:

    Carlos,
    Meus parabéns pela dica!
    Mas vai uma pergunta boba: só funciona no Excel 2007?
    Como uso o Excel 2003, dá pra fazer o mesmo usando outros recursos?
    Desde já grato pela atenção.

  11. em 18 de Dezembro de 2009 @ 18:20 11.Carlos César Tanaka disse:

    Prezado Átila,

    Esse exemplo também funciona no Excel 2003.
    Sobre a outra questão, em quais recursos você está pensando?

  12. em 20 de Janeiro de 2010 @ 19:00 12.Fernando disse:

    Caramba Carlos… Excelente dica!!! Funcionou perfeitamente para o que eu queria. Muito obrigado.

    Só tenho um pequeno problema. Quando eu não tenho a foto do produto e digito o código, aparece uma mensagem dizendo:

    “Erro em tempo de execução ‘53′:

    O arquivo não foi localizado”

    E daí o excel me dá as seguintes opções “Fim”, “Depurar”, “Ajuda”.

    Como eu faço para que o Excel simplesmente deixe uma foto dizendo “Foto indisponivel”?

    Outra duvida é: Eu consigo usar fotos em jpeg ou invés de bmp?

    se puder me responder para o meu e-mail para que eu não tenha que entrar no site todos os dias, lhe agradeço, no entanto se não puder não tem problema!

    Muito obrigado pela atenção e mais uma vez PARABÉNS!

    Abs

  13. em 1 de Fevereiro de 2010 @ 12:30 13.Carlos César Tanaka disse:

    Prezado Fernando,

    O controle de imagem presente no Excel não aceita imagens do tipo JPEG.
    Em relação ao erro se não existir o arquivo, você pode modificar o procedimento em VBA para avisar o usuário caso a imagem não exista, vide exemplo abaixo.
    Note que se você copiar e colar o código abaixo, preste atenção, pois às vezes o caracter de comentário é trocado pelo acento grave e as aspas também podem ser trocadas.

    Boa sorte!

    Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Mensagem
    ‘Lembrando que target é a referência para a célula modificada

    ‘verifica se a célula que contém o número do cliente foi modificada
    ‘Nesse caso é a célula B1
    If Target.Row = 1 And Target.Column = 2 Then
    ‘Carrega imagem de acordo com o caminho indicado na procura vertical
    ‘A função LoadPicture carrega um caminho de imagem na propriedade Picture
    ‘O seu uso é necessário
    Imgfoto.Picture = LoadPicture(Range(”B3″).Value)
    End If
    Exit Sub

    Mensagem:
    MsgBox (”Imagem de ” & Range(”B2″).Value & ” não existente.”)

    End Sub

  14. em 1 de Fevereiro de 2010 @ 17:36 14.Fernando disse:

    Carlos,
    Obrigado por responder a minha duvida. Entendi o que você fez e funcionou muito bem. No entanto isso não atende muito bem o que eu preciso. Pois essa planilha se transforará em uma apresentação

    Eu preciso que caso o sistema não encontre a foto no banco de dados, o sistema puxe uma foto no banco de dados chamada “Foto Indisponível”. Essa foto conterá nada mais do que uma frase escrito “Foto Indisponível”.

    Como eu faço isso e mais uma vez obrigado por responder esse monte de perguntas!
    Abs

  15. em 2 de Fevereiro de 2010 @ 15:52 15.Carlos César Tanaka disse:

    Fernando,

    Crie um arquivo de imagem com o conteúdo que você deseja e deixe-o no mesmo local dos outros arquivos de imagem. Digamos que esse arquivo se chama indisponivel.bmp.

    Depois troque a linha
    MsgBox (”Imagem de ” & Range(”B2″).Value & ” não existente.”)
    por
    Imgfoto.Picture = LoadPicture(”indisponivel.bmp”)

    Isso deve resolver o seu problema.

  16. em 2 de Fevereiro de 2010 @ 19:14 16.Fernando disse:

    Putz Carlos… o pior é que resolveu, mas parcialmente apenas. A sua dica está certa, no entanto eu coloquei nessa planilha pelo menos 6 fotos, que são controladas por códigos, da seguinte forma:

    ******* Inicio dos Comandos **********

    Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Row = 4 And Target.Column = 12 Then
    imgfoto.Picture = LoadPicture(Range(”M4″).Value)
    End If

    If Target.Row = 5 And Target.Column = 12 Then
    imgfoto1.Picture = LoadPicture(Range(”M5″).Value)
    End If

    If Target.Row = 6 And Target.Column = 12 Then
    imgfoto2.Picture = LoadPicture(Range(”M6″).Value)
    End If

    If Target.Row = 7 And Target.Column = 12 Then
    imgfoto3.Picture = LoadPicture(Range(”M7″).Value)
    End If

    If Target.Row = 8 And Target.Column = 12 Then
    imgfoto4.Picture = LoadPicture(Range(”M8″).Value)
    End If

    If Target.Row = 9 And Target.Column = 12 Then
    imgfoto5.Picture = LoadPicture(Range(”M9″).Value)
    End If

    End Sub
    ******* Final dos Comandos **********

    Quando eu dou a instrução que você me deu, colocando no inicio:
    Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Mensagem

    E no final de todos os comandos eu coloco:
    Mensagem:
    Imgfoto.Picture = LoadPicture(”indisponivel.bmp”)
    End Sub

    Ele obviamente só altera a imgfoto.Picture, porém esse comando não funciona com as demais imagens, Imgfoto1.Picture, Imgfoto2.Picture,3, 4, 5, etc.

    Como eu faço para fazer essa função funcionar para todos os casos? Ou seja, como eu faço para que em todos os casos, se eu digitar um código que não tenha a foto na pasta o excel puxe automaticamente a foto “indisponivel”?

    Abs

  17. em 13 de Fevereiro de 2010 @ 18:30 17.Ruan disse:

    cara consegui fazer funcionar só que este macro é executado so se eu for la na célula b1 e digitar , mas
    o que altera essa célula, no meu caso é um controle de formulário e infelizmente assim o macro não execultou, valeu pela atenção

  18. em 17 de Fevereiro de 2010 @ 19:48 18.Carlos César Tanaka disse:

    Fernando,

    Penso que um Select Case deve atender a sua necessidade. Algo assim:

    Mensagem:

    Select Case Target.Row
    Case 4: Imgfoto.Picture = LoadPicture(”indisponivel.bmp”)
    Case 5: Imgfoto1.Picture = LoadPicture(”indisponivel.bmp”)
    Case 6: Imgfoto2.Picture = LoadPicture(”indisponivel.bmp”)
    Case 7: Imgfoto3.Picture = LoadPicture(”indisponivel.bmp”)
    Case 8: Imgfoto4.Picture = LoadPicture(”indisponivel.bmp”)
    Case 9: Imgfoto5.Picture = LoadPicture(”indisponivel.bmp”)
    End Select

    Boa sorte.

  19. em 17 de Fevereiro de 2010 @ 19:57 19.Carlos César Tanaka disse:

    Ruan,

    Você pode tentar duas abordagens.

    1. Dependendo do controle que você usa, há propriedades que vinculam o conteúdo do controle a uma célula, por exemplo ‘ControlSource’ e ‘LinkedCell’. Indique a célula com o código nesses campos que o sistema funcionará.

    2. Em VBA, você pode usar as funções procv e proch (vlookup e hlookup) pelo objeto: worksheetfunction, exemplo, application.WorksheetFunction.VLookup

    Boa sorte.

  20. em 2 de Março de 2010 @ 13:31 20.Smiliguiido disse:

    Genteeh, eu gostariia de saber, se as células é em toda a parte do coorp? obgd se respondereem. -**-

  21. em 2 de Março de 2010 @ 17:13 21.Carlos César Tanaka disse:

    Smiliguiido,

    Não entendi a sua pergunta. Pode reformulá-la?

  22. em 9 de Março de 2010 @ 11:35 22.Lincoln Diones disse:

    Carlos bom dia! Parabéns pela dica, excelente. Porém gostaria de uma ajudinha sua. Gostaria que a fórmula buscasse a figura dentro da própria planilha.

    Grato.

  23. em 9 de Março de 2010 @ 12:17 23.Lincoln Diones disse:

    Carlos, outra coisa.

    Como faço para colocar a figura no tamanho que eu quiser?

    Grato.

  24. em 9 de Março de 2010 @ 15:48 24.Carlos César Tanaka disse:

    Olá Lincoln,

    Sobre a primeira questão, se a sua tabela estiver na mesma planilha onde está a figura, então mude as fórmulas das células B2 e B3. Por exemplo, se a tabela estiver no intervalo H1:J5 as fórmulas ficarão:
    em B2 =PROCV(B1; $H$1:$J$5;2;FALSO)
    em B3 =PROCV(B1; $H$1:$J$5;3;FALSO)

    Sobre o redimensionamento da figura. Primeiro ative a guia Desenvolvedor (botão do Office, Opções do Excel, ativar “Mostrar guia Desenvolvedor na Faixa de Opções”)

    Depois ative o “Modo de Design” pela guia Desenvolvedor. Clique na figura e dimensione conforme a sua necessidade.
    Por último desative o modo de Design.

    Boa sorte.

  25. em 9 de Março de 2010 @ 16:58 25.Lincoln Diones disse:

    Carlos boa tarde!

    Acredito que me expressei mal, vou tentar ser um pouco mais claro para que você consiga entender o que necessito. Suponhamos que tenho uma arquivo de Excel na qual temos: Plan1, Plan2 e Plan3.Na Plan1 tenho uma tabela que necessita associar um código a uma figura, porém todas as figuras (aproximadamente 20) estão dispostas em Plan3. Como faço para que o código VBA busque estas figuras na Plan3 e às associe de acordo com o código que eu digitar em uma célula em Plan1?

    Desde já agradeço.

    Obs: com relação em alterar o tamanho da imagem, sem problemas conseguir fazer.

  26. em 9 de Março de 2010 @ 21:21 26.Carlos César Tanaka disse:

    Lincoln,

    Isso que você quer vai depender de como estão as suas imagens.
    Há como me enviar esse arquivo em anexo para análise? Mande para o email atendimento@mprinformatica.com.br ou verifique no nosso site www.mprinformatica.com.br)

  27. em 15 de Março de 2010 @ 15:01 27.Lincoln Diones disse:

    Tudo bem Carlos?

    To precisando de sua ajuda novamente. Necessito de uma macro que Faça o Seguinte:

    Tenho Plan1 e Plan2, e um botão para executar a Macro em Plan2. Preciso copiar dados da Plan1 na coluna A1:A20 e colar estes valores em Plan2 na Coluna A1:A20, porém quando eu executar esta macro novamente preciso que ela copie novamente os dados que estão em Plan1 (A1:A20) e cole agora em B1:B20 em Plan2 e assim sucessivamente? Há esta possibilidade?

    Grato.

  28. em 19 de Março de 2010 @ 13:28 28.Lincoln Diones disse:

    Obrigado Carlos.

    Funcionou da maneira que eu estava precisando.

    Grande Abraço…

  29. em 5 de Abril de 2010 @ 11:40 29.HÉLIO MOSCATELLI disse:

    Ótima dica. Estou procurando isso faz tempo! Comigo funcionou mas não serviu para o que eu queria, já que no meu caso preciso de imagens com boa resolução e de tamanho grande porque é para um controle de mapas que eu tenho. E sinceramente as imagens ficaram horríveis e distorcidas… Recapitulando… O mecanismo funciona bem… mas é limitado quando se quer qualidade de imagem. E tb inviável em alguns casos por não suportar .JPG. A pergunta que não quer calar seria: Será que não existe um outro jeito?

  30. em 5 de Abril de 2010 @ 13:30 30.Carlos César Tanaka disse:

    Olá Hélio,

    Estamos sempre procurando novas maneiras para resolver esses problemas. Quanto ao suporte a outros formatos, como o JPG, vamos agauradar pelo lançamento da versão Office 2010 e esperar que ele já suporte uma gama mais ampla de formatos gráficos.
    O lançamento oficial ocorrerá nas próximas semanas!

  31. em 10 de Maio de 2010 @ 12:33 31.Anônimo disse:

    boa Tarde,

    Muita boa a dica, mas estou com um problema,
    quano digito o codigo do cliente aparece a segunte erro: ” erro em tempo de execução ‘76′:
    Caminho não localizado”

    O que faço??

    Obrigado

  32. em 10 de Maio de 2010 @ 13:00 32.Paulo Oliveira disse:

    Muito boa a dica,

    Mas estou com um erro que não consigo resolver.
    Quando digito o codigo do cliente aparece a seguinte mensagem:
    Erro em tempo de Execução ‘76′:
    Caminho não localizado.

    só que fiz tudo conforme exemplificado o codigo vba usado foi:

    Private Sub Worksheet_Change(ByVal Target As Range)
    ‘Lembrando que target é a referência para a célula modificada

    ‘verifica se a célula que contém o número do cliente foi modificada
    ‘Nesse caso é a célula B1
    If Target.Row = 1 And Target.Column = 2 Then
    ‘Carrega imagem de acordo com o caminho indicado na procura vertical
    ‘A função LoadPicture carrega um caminho de imagem na propriedade Picture
    ‘O seu uso é necessário
    imgfoto.Picture = LoadPicture(Range(”B3″).Value)
    End If
    End Sub

    O que posso fazer para corrigir o erro?

    Obrigado

  33. em 10 de Maio de 2010 @ 20:57 33.Carlos César Tanaka disse:

    Olá Paulo Oliveira,

    Os navegadores costumam trocar as aspas duplas e simples quando colocamos um trecho de código e publicamos em um site.
    Acho que esse pode ser o seu caso. Note que no comando:
    imgfoto.Picture = LoadPicture(Range(”B3″).Value)
    As aspas que antecedem B3 são diferentes das que terminam.

    Tente o seguinte, vá até o código VBA, apague as aspas que cercam B3 e digite novamente. Isso pode também acontecer com os apóstrofes (aspas simples).

    Boa sorte.

  34. em 6 de Junho de 2010 @ 18:35 34.Fernando disse:

    Boa noite Carlos!

    No meu caso a célula que se modifica fica na terceira planilha, chamei de Base 1, na posição F9 (fiz o procv direitinho para o F9).

    Sendo assim alterei no código, onde está escrito B3, coloquei
    “Plan3!F9″, ficando da seguinte forma: imgfoto.Picture = LoadPicture(Range(”Plan3F9″).Value, também tentei colocar (”Base1F9″), e também não deu certo.
    Você pode me ajudar a resolver esse problema?Obrigado

  35. em 6 de Junho de 2010 @ 18:48 35.Fernando disse:

    Carlos,
    Tentei agora com a célula que se modifica na mesma planilha (B78), alterando o código para imgfoto.Picture = LoadPicture(Range(”B75″).Value, porém não deu certo também.

  36. em 6 de Junho de 2010 @ 19:44 36.Fernando disse:

    Carlos, meu caso talvez se enquadre no mesmo do Ruan, pois o meu caso trata-se de um formulário com vínculo de células, ou seja a célula modificada não é digitada diretamente nela, não sei se tem algum sentido isso. Obrigado !

  37. em 7 de Junho de 2010 @ 08:09 37.Fernando disse:

    Carlos,

    Não consegui fazer, não sei se o problema ocorre porque
    não digito o valor diretamente na célula (modificável), ele se altera automaticamente através de um formulário. Quanto ao caminho, este está em outra planilha ( planilha 3) Obrigado

  38. em 7 de Junho de 2010 @ 14:07 38.Carlos César Tanaka disse:

    Olá Fernando,

    O fato de você usar um formulário para alterar a célula na planilha não influi em nada o funcionamento da procura.

    Notei diversos errinhos que podem estar afetando o funcionamento do seu arquivo.

    No seu primeiro comentário, se o nome da planilha é “Base 1″, o certo é imgfoto.Picture = LoadPicture(Range(”Base 1!F9″).Value)

    No segundo comentário você digitou 75 em uma parte e 78 em outra.

    Verifique se o problema é esse.

    Boa sorte.

  39. em 7 de Junho de 2010 @ 16:29 39.Fernando disse:

    Carlos, obrigado pelo retorno.
    Nâo deu certo, eu fiz certinho como o seu exemplo em outra planilha. Somente digitei errado no meu recado, mas fiz certo. Agora a célula que aponta o caminho, com procv, está no B 78, então coloquei imgfoto.Picture = LoadPicture(Range(”B78″).Value, e não resolveu. A célula que se modifica é a B 79, tentei alterar para If Target.Row = 79 And Target.Column = 2 Then e também não deu.

  40. em 7 de Junho de 2010 @ 17:46 40.Carlos César Tanaka disse:

    Olá Fernando,

    Será preciso ver o seu arquivo e analisá-lo. Envie-o anexado para (suprimido)

    César

  41. em 7 de Junho de 2010 @ 18:12 41.Fernando disse:

    Blz, enviei!

  42. em 8 de Junho de 2010 @ 19:45 42.Carlos César Tanaka disse:

    Fernando,

    O ponto central para fazer a sua planilha funcionar é a compreensão de eventos. Quando os eventos ocorrem.
    No Excel, os eventos de uma planilha ocorrem somente se a planilha estiver ativa. Se você quiser que um evento da planilha A gere uma mudança na planilha B, então coloque o código VBA na planilha A.

    Espero ter esclarecido.

  43. em 17 de Junho de 2010 @ 13:18 43.Guilherme disse:

    Oi tudo bem eu gostaria de saber se tem como fazer isso no Broffice.org Calc

  44. em 17 de Junho de 2010 @ 17:51 44.Carlos César Tanaka disse:

    Olá Guilherme,

    Infelizmente não atuamos com o Calc. Não saberia responder se é possível fazer isso com o Calc.

  45. em 19 de Junho de 2010 @ 20:48 45.Ruan disse:

    Ola ja fiz uma pergunta aqui e foi resondido, mas agora pintou uma nova duvida.Na macro procv com imagens, ela so roda ao alterar uma celula na linha especifica, mas na minha planilha sobre copa do mundo quero que a macro rode ao alterar qualquer celula da Plan1.
    Obrigado pela atenção! e a ajuda que ja me deram antigamente.

  46. em 19 de Junho de 2010 @ 23:14 46.Rafael Marques disse:

    César. Obrigado por nos ajudar! mas, cara, não to conseguindo fazer

    Primeiro.
    If Target.Row = 1 And Target.Column = 2 Then quanto
    os numeros 1 e 2 referem-se ao que linhas e colunas…?

    Segundo.
    No exemplo que você disponibilizou para baixar esta funcionando mas quando eu mudo o quadro da figura de localização a sua planilha para de funcionar.

    Valeu Pela Ajuda.

  47. em 21 de Junho de 2010 @ 13:18 47.Carlos César Tanaka disse:

    Prezado Ruan,

    Para alterar a imagem alterando qualeur célula, basta retirar a estrutura If … Endif

    Então em vez de:
    If Target.Row = 1 And Target.Column = 2 Then
    imgfoto.Picture = LoadPicture(Range(”B3″).Value)
    End If

    O código fica:
    imgfoto.Picture = LoadPicture(Range(”B3″).Value)

    De qualquer modo, o caminho da imagem deve continuar na célula B3.

    Boa sorte

  48. em 21 de Junho de 2010 @ 13:45 48.Carlos César Tanaka disse:

    Olá Rafael,

    Sobre a primeira dúvida, Row significa linha, Column significa coluna, então row=1 e column=2 é a célula B1.

    Em relação à sua segunda dúvida, se você mudar a imagem para outra planilha, deverá alterar o código. Por exemplo se somente a imagem foi para a Plan3, então em vez de:

    imgfoto.Picture = LoadPicture(Range(”B3″).Value)

    o código ficará:
    Sheets(”Plan3″).imgfoto.Picture = LoadPicture(Range(”B3″).Value)

    Boa sorte.

  49. em 13 de Julho de 2010 @ 20:27 49.Ruan disse:

    Ola, não quero ser chato, mas la vou.
    Ja fui achudado duas vezes por voceis, so que agora pesso ajuda devido a macros em geral.Procurei, procurei mas não achei e resolvi recorrer a voceis.
    Como seria para fazer rodar uma macro em relação ao valor da celula. Por exemplo se na celula c7 tivesse o valor 7 rodasse a macro (rodada_7). Muito abrigado!

  50. em 14 de Julho de 2010 @ 21:48 50.Carlos César Tanaka disse:

    Ruan,

    Respondi a sua questão em outra thread: Uso da Estrutura Select … Case.
    Dê uma olhada lá e comente.

  51. em 25 de Julho de 2010 @ 17:30 51.André disse:

    Amigo, boa tarde!
    Meus parabens, vc tem muita boa vontade. Bacana!
    Me tira uma duvida, uso o office xp, daria para eu realizar esses passos por essa versão? Se possivel, teria como explicar? Obrigado pela atenção.

  52. em 26 de Julho de 2010 @ 19:08 52.Carlos César Tanaka disse:

    Prezado André,
    Boa noite.

    Dá sim para usar o Excel XP, 2003, 2000. Inclusive quase tudo é igual à versão 2007.
    A única parte que muda é a criação do controle imagem, que começa no parágrafo:
    “- Ative a Guia Desenvolvedor …”
    até o o parágrafo:
    “Feche a janela de propriedades e desative o botão Modo de Design na guia Desenvolvedor.”

    Vou postar as modificações a partir desse trecho:

    ==================================================
    - Acioneo menu Exibir, Barras de ferramentas, opção Caixa de ferram. de controle;
    - Na caixa de ferramentas que foi aberta, clique sobre o controle Imagem (ActiveX);
    - Agora desenhe um retângulo, arrastando o cursor do mouse de um vértice até o vértice oposto. O tamanho da imagem pode ser mudado depois através dos círculos em torno desse retângulo.

    O local onde será exibida a imagem está pronto, veja o nosso exemplo na figura anterior. Esse controle precisa ser configurado, para isso clique no botão propriedades que está na Caixa de feramentas. Altere as seguintes propriedades:
    (Name) para imgfoto
    PictureSizeMode para 1-fmPictureSizaModeStretch

    Feche a caixa de ferramentas.

    ==================================================

    Boa sorte.

Link desta publicação | RSS dos Comentários

Deixe uma resposta.