Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
  • Avatar do usuário
#5935
Olá pessoal,

Minha noção sobre VBA vem quase toda dos ensinamentos do Guru. Fiquei impressionado com os vídeos disponibilizados no youtube e comecei a pesquisar sobre o assunto.
Consegui aplicar e modificar os códigos apresentados nos 3 vídeos de mapas interativos. Tudo funcionando 100% aqui :D . Porém, como uso o mapa com os códigos do IBGE, e não com os nomes dos municípios, quando clico sobre qualquer uma das cidades o msgbox me retorna o código do município.
Estou quebrando a cabeça para tentar fazer um procv no VBA, e retornar o nome do município, ao invés do código, mas sem sucesso até agora.
Todas as minhas planilhas possuem uma coluna com os nomes das cidades e uma com o código do IBGE. Mais ou menos assim:
Município --- Cod_IBGE
Cidade A ----- 2100100
Cidade B ----- 2150350

Ficarei extremamente grato se alguém puder me indicar algum caminho de como retornar o nome do município utilizando o código de colorir mapas apresentado pelo mestre Guru.

Muito obrigado!

Flávio
#5942
Tem como você colar a linha de código que está o msgbox? Assim fica mais fácil fazer a devida modificação
#5955
Mestre, eu utilizei este código do seu video 2 sobre mapas:

Sub SelecionarEstado()

Dim sEstado as string
sEstado = Activesheet.shapes(application.caller).name

Msgbox sEstado

End Sub



E depois este, para aplicar a macro de cima em todos os shapes:


Sub Atribuir()

Dim forma as shape

For each forma in activesheet.shapes.range("Grupo 1")
forma.onAction = "SelecionarEstado"

Next

End Sub



Segue um print da planilha. (Não posso enviá-la por ser arquivo do serviço).
Ao lado direito do mapa, há uma tabela enorme de dados, que precisei ocultar. Mas já dá para ver a relação entre os nomes dos municípios com os códigos do IBGE.

Imagem

Agradeço por tentar ajudar tão prontamente.

Muito obrigado,

Flávio
#6004
A sintaxe de uso para o Find, tente adequar a sua realidade
(Supondo codigo na coluna A, e retornar nome da coluna B)
Código: Selecionar todos
Sub SelecionarEstado()
Dim sEstado As String
sEstado = ActiveSheet.Shapes(Application.Caller).Name

With Sheets("Plan1").Range("A:A") 'Altere para o nome de planilha e coluna desejado
      
    ' Carrega a variavel de Objeto Localizado
    Set Localizado = .Find(sEstado, LookIn:=xlValues, LookAt:=xlPart)  'Para localizar um texto exato na celula, mudar a propriedade para xlWhole
    ' Sempre que a variavel nao for numero ou texto, e ter que carregar algum objeto tem que usar o SET
    
    If Not Localizado Is Nothing Then
        
        MsgBox "Codigo IBGE " & Localizado & " Corresponde ao Estado " & Cells(Localizado.Row, 2)
    
    End If
End With
End Sub
Para utilizar o Match; porem atentar se o valor / coluna procurado é como texto ou numero
Código: Selecionar todos
Sub Uso_Match()
Dim lRow As Long, nRow As Long
sEstado = 9580330 'Atentar se valor é numero ou texto
 'Altere para o nome de planilha e coluna desejado
lRow = Sheets("CEPBRASIL").Cells(Cells.Rows.Count, "A").End(xlUp).Row

nRow = Application.Match(sEstado, Sheets("CEPBRASIL").Range("A1:A" & lRow), 0)
If Not IsError(nRow) Then
    MsgBox "Codigo IBGE " & sEstado & " Corresponde ao Estado " & Cells(nRow, 2)
End If
End Sub
#6010
Grande Reinaldo, você é o cara! :shock:

Sua primeira solução, a do Find, funcionou perfeitamente.
A Msgbox me retorna o nome do município quando clico sobre ele. Fantástico!

Não conhecia o esquema de ter que utilizar o SET, como você deixou explicado no primeiro código: "Sempre que a variável não for numero ou texto, e ter que carregar algum objeto tem que usar o SET".

Agradeço pela grande ajuda! Fico te devendo uma! :D
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord