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
Por JCabral
Avatar
#32206
Boa tarde
Estou a ter um enorme problema, e que é o seguinte:
Tenho uma ListBox com várias colunas, em que , a primeira coluna é o ID da segunda coluna e as restantes colunas são parametros que classificam a tarefa que está na segunda coluna.

Assim a primeira e a segunda coluna têm valores fixos e as restantes podem variar.

Por isso queria criar uma userform para poder atualizar os dados (O botão atualizar não está a funcionar). Assim quando seleciono uma determinada linha na ListBox1 os valores nas ListBox2 até ListBox5 ficam realçados. Depois posso alterar os valores nas ListBox2 até ListBox5 e fazer o update dos valores.
O problema é que com números está a dar-me erro - ListBox3 e ListBox4 - e não consigo descobrir o porquê.

Estou a trabalhar com o Excel 2013 em Português, o problema poderá ter a haver com o simbolo que separa os números das casa decimais, i.e., "," ou "." . Ou seja na Userform aparece "." e na planilha aparece ","

Imagem
Imagem

Como posso resolver isto?

Obrigado mais uma vez
Você não está autorizado a ver ou baixar esse anexo.
Editado pela última vez por JCabral em 23 Abr 2018 às 13:27, em um total de 1 vez.
#32343
Descobri um exemplo na Net e adaptei, só que apesar de fazer o Highlight do item selecionado na ListBox1, nem sempre esse valor está de facto selecionado.

Ou seja o valor nem sempre é escrito na textbox. (tentem várias vezes, umas vezes dá outras não)

Alguma ajuda?

Obrigado
Jorge Cabral
Você não está autorizado a ver ou baixar esse anexo.
#32476
Na segunda planilha que você mandou
Código: Selecionar todos
Sub ListBox1_Click()

    Dim T3 As Double
    TextBox7 = Macro1
    
    With ListBox2
        .ListIndex = -1
        For i = 0 To .ListCount - 1
                If .Column(0, i) = ListBox1.List(ListBox1.ListIndex, 0) Then
                    .ListIndex = i
                    .Selected(i) = True
                    Exit For
                End If
        Next i
    End With
    TextBox10.Value = ListBox2.List(ListBox2.ListIndex, 0)
End Sub

Private Sub ListBox2_Click()
    TextBox10.Value = ListBox2.List(ListBox2.ListIndex, 0)
End Sub
#32478
Veja se é isso.
Você não está autorizado a ver ou baixar esse anexo.
#32516
babdallas escreveu:Veja se é isso.
babdallas

Funciona na perfeição excepto se eu formatar as colunas 3 , 4 11 e 12 da ListBox1 como percentagem, que é como eu gostaria que fosse o display da Listbox1.

Dá para dar mais uma ajuda?

Obrigado
Jorge
#32517
E o listbox 3 e 4, em número ou porcentagem?
#32523
Fiz as seguintes mudanças (ver em anexo):
1) Formatei as porcentagens da Folha1;
2) Mudei o código para carregar a Listbox1, 3 e 4 para trazer com a porcentagem usando a propriedade RowSource ao invés de List, usando a propriedade Address com External=True para trazer a referência completa do intervalo que alimenta a Listbox (com Pasta de Trabalho, Nome de Planilha e Intervalo)

Espero que seja isso.
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por JCabral
Avatar
#32540
Babdallas

Funciona impecavelmente, contudo consegui resolver com a sua anterior solução colocando:
Código: Selecionar todos
    lngLin = Application.WorksheetFunction.Match( _
                CDbl(Format(ListBox1.List(ListBox1.ListIndex, 3), "Standard")), Listas.ListObjects("tblAFTPDF").DataBodyRange, 0)
Depois de formatar as colunas e as ListBoxes para percentagem.

Muito obrigado
#32585
Babdallas

Deu-me um erro, quando os valores nas colunas 3 e/ou 4 são nulos.

Ou seja quando não existem valores e eu vou atualizar dá erro.

É possível contornar esse erro, sem ser com o "On error resume next"?

Obrigado mais uma vez
Jorge
#32590
Você pode ter valores de porcentagem na Listbox1 diferentes dos que estão na Listbox 3 e 4? Se sim, quando der o erro, as Listbox 3 e 4 não devem selecionar nada?
Explique um pouco melhor como você quer que se comporte quando a porcentagem da Listbox1 não for encontrada nas Listbox3 e 4.
#32591
Veja se é isso o que deseja.
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por JCabral
Avatar
#32599
Por culpa minha não expliquei tudo direito desde o principio, então é assim:

- O que se pretende com esta planilha é classificar uma determinada tarefa, COLUNA#1 da ListBox1.
- Assim a ListBox1 terá sempre valores em COLUNA#0 e em COLUNA#1, todos os outros valores pode ter ou não dependendo se eu já classifiquei a tarefa ou não.

- Se eu já classifiquei a tarefa posso sempre alterar os valores nas ListBox2 a ListBox6 e atualizar os valores;
- Se eu ainda não classifiquei então posso classificar e atualizo os valores

O erro aparece quando ainda não classifiquei as tarefas ou seja quando os valores das colunas #2 a #12 da ListBox1, estão vazias.

Espero que agora esteja tudo claro.

Obrigado
Jorge Cabral
#32601
Veja agora.
Você não está autorizado a ver ou baixar esse anexo.
#32613
Veja agora.
Você não está autorizado a ver ou baixar esse anexo.
#32640
Bom dia Babdallas

Testei a sua ultima versão e está a aparecer um pequeno erro que explico na imagem abaixo.
Imagem
Parece que por algum razão a ultima instrução não é executada.
Mesmo que inclua a linha de código para fazer o refresh da ListBox6, conforme abaixo,não funciona - inclui nos dois "IF's.
Código: Selecionar todos
    If Application.WorksheetFunction.CountIf( _
                Listas.ListObjects("tblAFTPFO").DataBodyRange, ListBox1.List(ListBox1.ListIndex, 4)) > 0 Then
        lngLin = Application.WorksheetFunction.Match( _
                ListBox1.List(ListBox1.ListIndex, 4), Listas.ListObjects("tblAFTPFO").DataBodyRange, 0)
        ListBox4.Selected(lngLin - 1) = True
        TextBox3 = ListBox4.List(ListBox4.ListIndex, 0)
    Else
        ListBox4.RowSource = Listas.Range("tblAFTPFO").Address(external:=True)
        ListBox6.List = Listas.Range("tblK2").Value
        TextBox3 = ""
    End If
O que estará a acontecer?
Obrigado
Jorge
Você não está autorizado a ver ou baixar esse anexo.
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