Notifications
Clear all

Escreve na linha seguinte

9 Posts
4 Usuários
0 Reactions
1,366 Visualizações
kurkas
(@kurkas)
Posts: 85
Trusted Member
Topic starter
 

Boa tarde,

Tenho uma folha com um combobox e quando selecciono o valor pretendido ele faz busca na folha "Registos" e devolve o resultado do cálculo na folha "ESTAT".
(Créditos ao Sr. Reinaldo que me resolveu o problema num tópico anterior)
Devolve sempre na linha 2.
Pretendia que cada vez que seleccionasse um valor ele fosse adicionando na linha seguinte e não na linha 2.
Quando selecciono um valor da Combobox1 e esccreve na linha 2.
Quando selecciono outro adiciona na linha 3, e assim sucessivamente.
Porém, após várias tentativas não consigo adaptar o código da maneira que pretendo, ou dá erro ou escreve novamente na linha 2.
Obrigado

 
Postado : 19/09/2015 6:42 am
(@messiasmbm)
Posts: 223
Estimable Member
 

tem 1ª,2ª3ª repetida ou vai ser uma só?

 
Postado : 19/09/2015 7:30 am
kurkas
(@kurkas)
Posts: 85
Trusted Member
Topic starter
 

no exemplo seleccionei 1ª, 2, 3ª, mas poderia selecionar apenas 2ª e 3ª, ou apenas 3ª e 1ª. ou seja, qualquer valor, em qualquer ordem.
Apenas quero que (por exemplo) se seleccionar 3ª, ele escreve na linha 2, se selecionar a seguir 1ª, que o faça na linha seguinte, ou seja, na terceira.
e assim sucessivamente, 1ª linha, 2ª linha, 3ª linha, etc...

 
Postado : 19/09/2015 7:40 am
(@messiasmbm)
Posts: 223
Estimable Member
 

To olhando a planilha aqui seria melhor procurar por MATRICULA ,não?

 
Postado : 19/09/2015 7:40 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Não sei se entendi, mas experimente

Private Sub ComboBox1_Change()
Dim lastRow As Long, lastResultRow As Long, X As Long
Dim Km As Long, Litros As Long
Set SHT = ThisWorkbook.Worksheets("Registos")

' Verifica qual a ultima célula preenchida
lastRow = SHT.Cells(Rows.Count, 1).End(xlUp).Row
        
' Apaga valores anteriores
'Range("A2:C500").ClearContents
lastResultRow = Sheets("ESTAT").Cells(Rows.Count, 1).End(xlUp).Row + 1
        
' Ciclo em todas as linhas
For X = 2 To lastRow '1 Linha dados pequisa
        
    ' verifica se o valor é igual ao da pesquisa
    If SHT.Cells(X, 3).Value = ComboBox1.Text Then '1 coluna pequisa
        Km = Km + SHT.Cells(X, 10).Value
        Litros = Litros + SHT.Cells(X, 11).Value
    End If
Next
    
   Sheets("ESTAT").Range("A" & lastResultRow) = ComboBox1.Text
    Sheets("ESTAT").Range("B" & lastResultRow) = Km
    Sheets("ESTAT").Range("C" & lastResultRow) = Litros
End Sub

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

 
Postado : 19/09/2015 7:42 am
(@messiasmbm)
Posts: 223
Estimable Member
 

o código vai buscar apenas a primeira ocorrência...
se tiver...
3ª primeira
3ª segunda
3ª terceira
se não souber o que está fazendo vai fazer o trabalho dobrado,fazer e depois desfazer.

 
Postado : 19/09/2015 7:45 am
kurkas
(@kurkas)
Posts: 85
Trusted Member
Topic starter
 

Eu tenho esse código, aliás foi no meu tópico há uma semana, que me resolveste Reinaldo!!
Eu tenho a folha com matrículas, mas preciso de fazer uns gráficos em que as variáveis são Secção/Km´s e Secção/Litros, e por esse motivo preciso que me dê os resultados por secções.
O problema é que cada secção tem várias viaturas, e no final do ano para fazer estatistica não o vou fazer com dezenassssss de viaturas, mas sim com algumas secções.
Espero me ter feito entender.

 
Postado : 19/09/2015 7:50 am
(@mprudencio)
Posts: 2749
Famed Member
 

Ve se é isso

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 19/09/2015 8:04 am
kurkas
(@kurkas)
Posts: 85
Trusted Member
Topic starter
 

Como se diz costuma dizer: Puxa, valeu cara!!!!
É isso mesmo!!!
É que eu ainda estou mesmo verdinho nestas coisas do vba!!
Para que conste, o Planilhando tem ajudado imenso o estado Português.
Agradecido.

 
Postado : 19/09/2015 8:13 am