Notifications
Clear all

associar uma Formas numa Dim

8 Posts
4 Usuários
0 Reactions
1,160 Visualizações
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Eu colei um mapa Jpg do Brasil em minha planilha, pois nao o tenho em Vetor.
usei varios quadradinhos em cada regiao, os dei a cada quadrado um nome e os deixei transparente. Tenho varias planilhas com os Estados e todas seguem um mesmo padrao de Layout. Essa que esta o mapa se chama Aba "MAPA". quero usar a mesma VBa abaixo para todas as Abas, mas para isso tenho que ter algo dentro da Macro que associe cada quadradinho a um Estado.

Assim preciso ao clicar no quadrado do RJ no inicio da mesma tera que ter a DIM que se associe ao Quadrado de nome RJ, assim o comando Sheets funcionaria corretamente, pois depois disto joga a Aba correspondente e a executa.

pensei em algo assim :

Din Estado

Sheets("Estado").Select ' Veja que no cod abaixo botei " SP ", pois assim esta funcionando,

Ao iniciar a Macro ela cria a memoria com nome do quadrado que foi clicado e usa no Sheets. Assim nao será preciso eu ter que fazer uma macro especifica a cada Estado do Brasil.

Se alguem puder complementar o codigo abaixo serei grato.

Andre

Sub Lojas()

        Sheets("SP").Select

   'Setting up the Excel variables.
   Dim olApp As Object
   Dim olMailItm As Object
   Dim iCounter As Integer
   Dim Dest As Variant
   Dim SDest As String
   iCounter = 1
   
   'Create the Outlook application and the empty email.
   Set olApp = CreateObject("Outlook.Application")
   Set olMailItm = olApp.CreateItem(0)
   
   'Using the email, add multiple recipients, using a list of addresses in column C.
   With olMailItm
       For iCounter = 1 To WorksheetFunction.CountA(Columns(3))
       
       ' Sheets("Email").Select
               SDest = SDest & ";" & Cells(iCounter, 3).Value
       
       Next iCounter
       
    'Do additional formatting on the BCC and Subject lines, add the body text from the spreadsheet, and send.
       .BCC = SDest
       .Subject = "Tabela de Pedidos"
       '.Body = "Ola"
        .Body = "Olá Lojista!. Segue anexo nossa Tabele de Pedidos, fico no seu Aguardo." & vbCrLf & _
        "" & vbCrLf & _
        "Seu Pedido Mímimo é de R$ 600,00, a a forma de envio é F.O.B" & vbCrLf & _
        "" & vbCrLf & _
        "ATENÇÃO" & vbCrLf & _
        "" & vbCrLf & _
        "Seu Pedido somente será liberado depois de sua Aprovação, pois encaminharei um esboço do seu pedido por E-Mail." & vbCrLf & _
        "" & vbCrLf & _
        "Obrigado!" & vbCrLf & _
        "" & vbCrLf & _
        "André Luiz" & vbCrLf & _
        "Fone: (21)3564 & vbCrLf & _
        "WhatsApp: (21)98799" & vbCrLf & _
        "atendimento-rj@"
       
       'troque o diretorio do documento que queira enviar 'add' anexo.
       .Attachments.Add "C:UsersAndreDesktopPedidosLojista.xlsx"
       .Send
   
   
   End With
   
   'Clean up the Outlook application.
   Set olMailItm = Nothing
   Set olApp = Nothing
 
Postado : 17/12/2015 11:17 am
(@srobles)
Posts: 231
Estimable Member
 

fazerbem, boa tarde!

Esses quadradinhos são controles (tipo ActiveX ou de formulários) ?

Caso positivo, acho que a forma mais prática seria você associar a mesma macro para todos os controles e cada uma deles deve ter o mesmo nome que uma das planilhas EX:

O quadrado ter o nome SP e a planilha ter o mesmo nome SP.

Adicione um módulo e cole este código :

Public Estado As String

Aí no evento Click de cada controle faça :

Private Sub SP_Click()
   Estado = SP.Name 'Ou seja, o retorno será SP
   ThisworkBook.Sheets(Estado).Activate 'Seleciona a planilha SP
End Sub

Existem outras formas de se fazer isso, porém, seria melhor trabalhar diretamente no seu modelo.

Abs

Espero ter ajudado.

Abs.

Saulo Robles

 
Postado : 17/12/2015 12:05 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

fazerbem, boa tarde!

Esses quadradinhos são controles (tipo ActiveX ou de formulários) ?

Caso positivo, acho que a forma mais prática seria você associar a mesma macro para todos os controles e cada uma deles deve ter o mesmo nome que uma das planilhas EX:

O quadrado ter o nome SP e a planilha ter o mesmo nome SP.

Adicione um módulo e cole este código :

Public Estado As String

Aí no evento Click de cada controle faça :

Private Sub SP_Click()
   Estado = SP.Name 'Ou seja, o retorno será SP
   ThisworkBook.Sheets(Estado).Activate 'Seleciona a planilha SP
End Sub

Existem outras formas de se fazer isso, porém, seria melhor trabalhar diretamente no seu modelo.

Abs

Ola amigo,

o quadrado a que me refiro é la em Menu no Excel
Inserir / Formas

E cada quadrado que pus no Mapa dei um nome SP, RJ, BA, e as Abas seguem o mesmo nome dos quadrados

A macro é esta que postei acima, vc poderia entao ajeitar os comandos no inicio da mesma pra mim ?

Andre

 
Postado : 17/12/2015 12:18 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

segue exemplo no anexo

 
Postado : 17/12/2015 12:34 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

fazerbem, adaptei MG e RJ,

Agora é só atribuir todos os quadrados à macro.

E depois tratar algum possível erro e os ajustes necessários.

Qualquer coisa da o grito.
Abraço

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 17/12/2015 1:25 pm
Wagner Morel
(@wagner-morel-vidal-nobre)
Posts: 0
Illustrious Member
 

fazerbem,

Boa tarde!

Segue minha sugestão:

Veja que copiei sua aba MAPA para outra aba para poder demonstrar a minha ideia. Sua aba origina chama-se MAPA (2). Acredito que ficaria muito melhor se você inserir, no lugar dessas formas que você inseriu, apenas controles Label ActiveX com os nomes de cada Estado. Você dar a propriedade Caption e a propriedade Name desses Label's a sigla do Estado. Depois é só dar uma clique duplo em cima de qualquer Label desses para abrir a janela de código. Feito isso você chama a rotina Lojas, passando como parâmetro o nome do Label (RJ, MG, CE, etc). Pronto, quanto a rotina Lojas inicializar receberá o nome do Estado que foi clicado.

Veja, no exemplo anexo que fiz para dois Estados apenas: RJ e CE.

Desenvolvo pequenas soluções em VBA Excel a valores que variam entre R$ 50,00 a R$ 200,00. Se te interessar, entre no meu instagran (vba_excel_desenvolvimento)

Atenciosamente
Wagner Morel

 
Postado : 17/12/2015 2:03 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Bernardo, ficou chupeta !!!!!

Wagner Morel, vou testar e te digo, ai vescolho um dos 2,

De novo agraço a ajuda de todos vcs.

Ja ja volto com meu parecer, o do Bernardo ficou Show !

Ja volto Wagner

 
Postado : 17/12/2015 2:10 pm
(@fazerbem)
Posts: 697
Honorable Member
Topic starter
 

Bernardo e Wagner Morel, muito Obrigado mesmo por terem adaptado a mim o código. Eu escolhi ficar com a ideia do Bernardo, por ser mais simples. A Sua Wagner se o Mapa nao tivesse ja escrito as Siglas e o mais importante, se eu soubesse como usar a opcao que me recomendou, talvez fosse até melhor. Mas tanto um como o outro eu testei aqui e levaram ao mesmo objetivo. Como tenho que escolher um , fiquei com o Bernardo desta vez. Lembrando que o amigo ja me ajudou muito antes e agora tambem, claro.

Essa minha Tabela que eu Fiz, é uma Tabela Interna minha para com a Empresa que represento. E como sou muito detalhista, sempre surge uma coisa nova a se adaptar. Da forma que esta ficou muito prática e funcional.

Muito Obrigado a todos e até a proxima dúvida , rsrsr

Andre

 
Postado : 17/12/2015 2:53 pm