none
Classificar Range Variavel ?? RRS feed

  • Pergunta

  • Olá pessoal...

    Estou com um probleminha em um Form de cadastro!
    Tenho uma planilha onde na linha 1 tem varios nomes, das colunas "A" á "AZ".
    Embaixo de cada nome tem várias linhas com números!
    Digamos que na linha 1 tenha "Carlos", na linha 2 "1", linha 3 "3", linha 4 "2" e na linha 5 "4".
    Quando digito "Carlos" no TextBox1 e "5" no TextBox2, a macro procura por "Carlos" na linha 1, seleciona a célula e acrescenta o "5" na linha 6!
    Ou seja, o nome "Carlos" pode estar em qualquer coluna de "A" á "AZ".
    Como faço para classificar os números de 1 á 5 em ordem crescente, sendo que a coluna a ser classificada depende da pesquisa?

    Obrigado.....
    domingo, 21 de outubro de 2012 07:11

Respostas

  • Oi Mclota

    Veja se o código abaixo é o que você quer.

    Estou assumindo:

    Seu form tem 2 textboxes com os nomes TextBox1 e TextBox2

    Existe um botão com o nome CommandButton1 que você usa para inserir os dados (e agora também para ordenar)

    Os dados estão em Plan1 com os nomes na linha 1

    É claro que você deve adaptar para o seu caso real (nomes dos textboxes, do botão, da planilha etc)

    Private Sub CommandButton1_Click() Dim myCol As Range, lastRow As Long If Me.TextBox1 <> "" And IsNumeric(Me.TextBox2) Then With Sheets("Plan1") '<-- Ajuste o nome da planilha 'Procura o nome na linha 1 Set myCol = .Rows(1).Find(What:=Me.TextBox1.Value, after:=.Cells(1, 1)) If Not myCol Is Nothing Then 'Pega a última linha com dados lastRow = .Cells(.Rows.Count, myCol.Column).End(xlUp).Row

    'Insere novo valor na linha abaixo .Cells(lastRow + 1, myCol.Column) = Me.TextBox2.Value

    'Ordena o intervalo .Range(.Cells(1, myCol.Column), .Cells(lastRow + 1, myCol.Column)).Sort _ Key1:=.Cells(1, myCol.Column), Header:=xlYes Else MsgBox "Nome não encontrado" End If End With Else MsgBox "Entre com um Nome em TextBox1" & vbCrLf _ & "e um Número em TextBox 2" End If End Sub

    Espero que ajude

    M.



    segunda-feira, 22 de outubro de 2012 03:29