Ir ao conteúdo

Como Linkar Seleção do ComboBox em Células do Excell


Posts recomendados

Postado

Prezados Colegas do Clube do Hardware

Sou iniciante nesse infinito e muitas vezes obscuro mundo da linguagem de programação.

Tenho um trabalho a realizar que, pode parecer e ser simples para algumas pessoas mas para mim está difícil.´

A missão é a seguinte, tenho um simulador que, ao clicar no botão " Ver Posição da Carteira", abre uma ComboBox com diversas opções de escolha.

Vamos supor que na lista Acumulação IGP-M, eu escolha um título " LH 5/1/2021 " e vai aparecer uma lista com valor e taxa. ( Ver passo a passo em anexo ). Após aparecer a lista, vamos supor que escolhemos um determinado valor, com respectiva taxa ao lado.

O grande desafio é o seguinte, gostaria de programar em VBA ou utilizar outra maneira, para estes valores selecionados de taxa e valor financeiro, jogar valor colado nas células correspondentes do Papel ( LH 052021 ) e plano ( Ex: Acumulação IGP-M ) constante na planilha em excel.

Aguardo uma luz para minha dúvida e imagino que seja trabalhoso, mas vamos lá, estou otimista

Segue abaixo o link para consulta do arquivo

http://www.sendspace.com/file/citc5j

Abraços

Jefferson Moraes

Postado

Tenho um exemplo mas terá verificar a possibilidade de adaptação...

Sub ItemSelecionado()

Dim sItem As Variant

'Captura o valor do item selecionado

sItem = Sheet1.Shapes("Drop-down 16").ControlFormat.List(Sheet1.Shapes("Drop-down 16").ControlFormat.ListIndex)

'Faz a comparação e seleciona a Aba

If sItem = "Sheet2" Then

Worksheets(sItem).Activate

End If

End Sub

Postado

ZinhoVBA

Obrigado pela ajuda e por responder minha mensagem.

Vou testar da maneira que sugeriu e acho provável algum tipo de adaptação

Te retorno amanhã com alguma posição,pois a planilha esta no trabalho

Até Mais

Postado

Zinho, programei da seguinte forma e está dando o erro " O Objeto é Obrigatório ":

Public Sub ItemSelecionado()

Dim sItem As Variant

'Captura o valor do item selecionado

sItem = Sheets1.Shapes("Drop-down 16").ControlFormat.List(Sheets1.Shapes("Drop-down 16").ControlFormat.ListIndex)

'Faz a comparação e seleciona a Aba

If sItem = "Sheet2" Then

Worksheets(sItem).Activate

End If

End Sub

Tenho algumas dúvidas :

1) como a macro vai identificar o valor e a taxa escolhida por plano conforme segue no ComboBox ( Seis planos com ativos diferentes e várias opções de valor e taxa ) ?

2)Como a macro vai saber onde alocar os valores e taxas capturados na planilha, sendo que, tenho células específicas para cada ativo de acordo com os planos ?

http://www.sendspace.com/file/citc5j

Aguardo Retorno

Postado

Jeferson, seria melhor si você postasse uma planailha fictícia ou original para podermos te ajudar, só imagem não vamos poder ajuda você.

Postado

Prezados,segue no link abaixo a planilha que preciso programar.

http://www.sendspace.com/file/750tui

Na planilha existe uma Macro " Ver Posição da Carteira " que abre um ComboBox ( Que foi programada e não feita via validação de dados ) onde temos 6 carteiras diferentes, com 10 opções de ativos ( Ex: NTNB,LH,NTNC com vencimentos diferentes ) e opções de escolha com patrimônio e taxa do papel ao lado ( Isso de acordo com o ativo escolhido).

A minha missão é, de acordo com o ativo escolhido para cada carteira, os valores e % de taxas escolhidos, preciso colar nas respectivas células da planilha, onde as células estão em negrito para preenchimento dos dados.

Para cada carteira, há seu respectivo campo para preenchimento do valor do papel e da taxa.

Sei que da para fazer um link quando não programamos o ComboBox, mas, com o combo programado, como linko as escolhas nas celulas especificas na planilha ?

Será que deu para entender ?

O ZinhoVBA me passou a seguinte sugestão para resolução :

Public Sub ItemSelecionado()

Dim sItem As Variant

'Captura o valor do item selecionado

sItem = Sheets1.Shapes("Drop-down 16").ControlFormat.List(Sheets1.Shapes("Drop-down 16").ControlFormat.ListIndex)

'Faz a comparação e seleciona a Aba

If sItem = "Sheet2" Then

Worksheets(sItem).Activate

End If

End Sub

Está dando o erro " O Objeto é Obrigatório " e não consegui adaptar de jeito nenhum.

Por Favor, alguém consegue me ajudar, ou indicar o modo correto para programar ?

Aguardo Retorno

Abs

Postado

Prezados,

Encontrei este material na Net.

Será que é factível utilizá-lo na planilha que possuo, tendo em vista minha necessidade ?

Por falta de muitos controles no VBA, o ListBox é quase uma unanimidade para fazer a apresentação dos dados de forma tabular. Ele funciona bem, permite adicionar múltiplas colunas, adicionar valores de cabeçalho, mudar o formato da seleção, enfim.

O fato é que, códigos de exemplo para alimentar um listBox com os dados de uma planilha há de monte, mas o contrário nem tanto. Bom, atendendo a pedidos, coloco aqui uma alternativa de código que faz exatamente o trabalho de copiar os dados de um ListBox para uma planilha.

Para não começar totalmente do zero, tomei como base o arquivo do site Ozgrid, disponível neste link:

http://www.ozgrid.com/FreeDownloads/ListBoxTransfer.zip

O código está bem bacana, porém, muito amarrado a planilha que foi produzida, sendo totalmente dependente da sua implementação

Segue minha planilha com o ComBox que quero linkar nas celulas da planilha Simulador, para seus respectivos ativos, valores e taxas

http://www.sendspace.com/file/citc5j

Abraços

Postado

Ola Jefferson de Moraes

1 - Baixei o arquivo Simulador 3_testeB mas o combo nao carrega da erro. Tem outra versao ou e nao.

2 - Eu nao entendi isto tambem: "colar nas respectivas células da planilha, onde as células estão em negrito para preenchimento dos dados"?

Postado

Márcio,

Obrigado pelo retorno.

Respondendo suas perguntas :

1- O ComboBox que me refiro está no botão "Ver Posição de Carteira", testei agora e está funcionando normalmente. O Botão "Colar Posições na Planilha" estou tentando ativar.

2 - Márcio, eu quis dizer o seguinte, perceba que entre as células E56:N73 ( àrea com células em negrito), existem as respectivas colunas com os códigos de cada ativo ( LH,NTNB,NTNC e etc ) com os vencimentos ao lado e para cada plano ( Coluna C ).

O desafio é, linkar as escolhas do combo em suas respectivas celulas nessa area.

Exemplo : Acumulação IGP-M - escolha do ativo LH -1/2/2021 - escolha do valor com a taxa ao lado (3.240 6,5%). Preciso linkar estas escolhas nas celulas K57 ( Valor ) K56 ( Taxa ) para o plano Acumulação IGP-M.

O Combo foi programado em VBA e não estou conseguindo programar que ao fechar o combo, os valores automaticamente sejam transferidos de forma transposta para suas respectivas celulas dos seus respectivos planos.

Acho que ficou mais claro agora né rsrs.

Qualquer coisa estou à disposição............Valeu

Postado

Ola Jefferson de Moraes

Não estou conseguindo executar a sua planilha, preciso carregar os combos para poder entender o que você quer, segui o seu que você mandou e deu mesmo erro:

Cliquei em no botão VER POSIÇÃO DA CARTEIRA (Planilha SIMULADOR) porém ao tentar carregar o combo ACUMULAÇÃO IGP-M da a seguinte mensagem:

Erro em tempo de execução '438'

O objeto não aceita esta propriedade ou método

dentro do procedimento

Private Sub cbDR_DropButtonClick()

Linha:

ActiveSheet.PivotTables("PivotTable10").RepeatAllLabels xlRepeatLa

Postado

Márcio,

Desculpe te apurrinhar com este problema, mas, estou curioso e àvido em resolvê-lo.

Testei mais uma vez e está Ok

De qualquer maneira, peguei a planilha original e postei no sendspace.

Veja se no link abaixo, consegue carregar os combos, eu consegui normalmente, se for o caso te mando a mesma por email

http://www.sendspace.com/file/aczuaz

Mais uma vez obrigado

Postado

Prezados colegas

Será que alguém conhece uma pessoa que possa me auxiliar nesta dúvida ?

Creio que a mesma deve ser ( ou foi ) a mesma para muita gente.

Aprender a Linkar escolhas/seleção em um Userforms tipo DropButton em uma ou algumas células do excel, interdependentes entre si, via VBA é muito importante, visto que, via Validação de Dados é muito limitado, ainda mais quando usamos várias informações relacionadas, onde a escolha de um está ou impacta na escolha de outra, o que acontece na maioria das vezes.

Portanto gostaria muito que algum expert me ajudasse neste fórum a encontrar o caminho das pedras para a resolução.

Aguardo Retorno

Abs

Postado

Ola Jefferson de Moraes

Tive que mudar as seguintes linhas em seu código:

ActiveSheet.PivotTables ("PivotTable11") '.PivotCache.Refresh

ActiveSheet.PivotTables ("PivotTable11") '.RepeatAllLabels xlRepeatLabels

Tive que tirar '.PivotCache.Refresh e '.RepeatAllLabels xlRepeatLabels porque dava erro e não carregava o combo)

Alterei a propriedade dos ListStyle dos LISTBOX de 0 para 1 (para poder marcar a seleção)

Alterei ReDim MyArray(y - 2, 2) As Variant para y - 2 porque estava carregando uma linha em branco.

Tive que criar 6 TEXTBOX para poder carregar uma variavel para comparar com os valores das celulas E55, F55, G55....

No BOTAO fechar coloquei o codigo que faz a transferencia.

Espero que esteja certo.

http://www.4shared.com/file/SArVmvVi/Simulador_3_teste_Alterado.html

Veja se é por aí!!!!

Postado

Prezado Márcio

Desculpe a demora em responder mas, vi a planilha só agora.

Só tenho uma coisa em dizer :

Resultado SEN-SA-CI-O-NAL !!!!

Era exatamente isso que precisava fazer, fora que foi uma aula de programação em VBA, fora que, como imaginava deu um certo trabalho, mas ficou muito bom nisso.

você me passou alguns ensinamentos lógicos que não se encontram nas literaturas sobre VBA

Aliás, existe algum bom livro sobre isso ?

Tenho alguns, mais, muito superficiais, queria algo mais completo e robusto poia aprendo mais com vocês aqui no fórum do que nos livros.

Obrigado pela resolução e mais um caso resolvido

Abraços

Postado

Márcio,

Só fiquei em dúvida em relação a uma coisa.

Quando baixo o arquivo da internet, consigo fazer as escolhas e os valores são transferidos corretamente para as células.

Percebi que, quando faço o download e salvo no computador, ao fazer as escolhas, as tranferências ficam truncadas na primeira coluna, ou na coluna O, ou seja, fora do intervalo especificado na Macro.

O que acarreta este tipo de falha ?

Mais uma vez Obrigado.

Postado

Prezado Márcio,

Diagnostiquei dois problemas no simulador, um deles, relacionado a minha última mensagem :

1) Ao abrir o simulador, em Ver Posição da Carteira, selecionando qualquer ativo de qualquer carteira, ao clicar em Fechar, ele joga as informações em qualquer célula fora do quadro estipulado. E isso acontece somente quando o Excel está em Português, em Inglês, ele compara os dados da linha 51 e cola certinho as informações. Tem como tratar este tipo de problema, independentemente do padrão de idioma do excel ?

2) Colando os dados Taxa da Carteira e Valor, após escolha em Ver Posição da Carteira, para qualquer Plano, clicando em Calcular MtM , aparece o erro de execução 13' Tipos Incompatíveis. Será que o motivo está relacionado ao padrão de idioma do excel também ou o motivo é que a macro não calcula dados colados em padrão texto ?

Veja Planilha no Link Abaixo

http://www.sendspace.com/file/g5v7tv

Aguardo Retorno e desde já agradeço.

Abraços

Postado

Prezado Márcio,

Diagnostiquei dois problemas no simulador, um deles, relacionado a minha última mensagem :

1) Ao abrir o simulador, em Ver Posição da Carteira, selecionando qualquer ativo de qualquer carteira, ao clicar em Fechar, ele joga as informações em qualquer célula fora do quadro estipulado. E isso acontece somente quando o Excel está em Português, em Inglês, ele compara os dados da linha 51 e cola certinho as informações. Tem como tratar este tipo de problema, independentemente do padrão de idioma do excel ?

2) Colando os dados Taxa da Carteira e Valor, após escolha em Ver Posição da Carteira, para qualquer Plano, clicando em Calcular MtM , aparece o erro de execução 13' Tipos Incompatíveis. Será que o motivo está relacionado ao padrão de idioma do excel também ou o motivo é que a macro não calcula dados colados em padrão texto ?

Veja Planilha no Link Abaixo

http://www.sendspace.com/file/g5v7tv

Aguardo Retorno e desde já agradeço.

Abraços

Postado

Olá Jefferson de Moraes

1) No seu código você alterou o preenchimento dos 6 TextBox de:

TextBox2.Text = ativo & " - " & Format(dt_venc, "mmyyyy")

para

TextBox2.Text = ativo & " - " & Format(dt_venc, "ddyyyy")

Logo, vai carregar o dia e o ano e não o mês e o ano e o comparativo dará errado com a linha E.

Quanto a questão da versão Portugues/Inglês, o VBA trata as datas no formato americano, ou seja, mês/dia/ano, talves você tenha que cria algo que a verificação.

Segue exemplo de como mudar o formato da data

DataBrasil = CDate(Format("8/27/2010", "dd/mm/yyyy"))

2) Os valores incompátiveis provavelmente é porque você declarou:

Dim tx_cart As Double

mas o valor é um percentual (exemplo 6,30%)

Tente fazer uma verificação antes. Segue exemplo tirando o valor %

While Sheets("Simulador").Cells(51, i) <> 0

If Not Sheets("Simulador").Cells(j, i) = Empty Then

tx_cart = Mid((Sheets("Simulador").Cells(j, i)), 1, Len(Sheets("Simulador").Cells(j, i)) - 1)

End If

'tx_cart = Sheets("Simulador").Cells(j, i)

Veja se é por aí!!!!

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!