locked
Classificar em ordem crescente

    Question

  • Amigos,

     

    Qual o ajuste necessário no código abaixo para que ele classifique apenas um intervalo, por exemplo, B10:B30?

     

    Private Sub Worksheet_Change(ByVal Target As Range)
    'Se editar a coluna 1, faz a classificação
    If Target.Column = 1 Then
        Worksheets(1).UsedRange.Sort (Worksheets(1).Cells(1, 1))
    End If
    End Sub

     

    Sds

    Jerson

    Monday, July 07, 2008 3:38 PM

Answers

  • Agora vai funcionar..

     

    Code Snippet

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If ActiveCell.Column = 4 Then
            Application.OnKey "{RETURN}", "Organiza"
        Else
            Application.OnKey "{RETURN}"
        End If
    End Sub

     

     

    Wednesday, July 16, 2008 5:22 PM

All replies

  • Tente desta forma:

    Code Snippet

    Private Sub Worksheet_Change(ByVal Target As Range)
    'Se editar o intervalo B10:B30, faz a classificação
    Dim Ajuste As Range
    Dim Inter  As Range

    Set Ajuste = [B10:B30]
    Set Inter = Application.Intersect(Target, Ajuste)
    If Not (Inter Is Nothing) Then
        Worksheets(1).Ajuste.Sort (Worksheets(1).Cells(10, 2))
    End If
    End Sub

     

     

    [ ]s

    Monday, July 07, 2008 5:07 PM
  • Adilson, aproveitando que ainda não fechei este tópico, só mais um ajuste, pls: tenho que classificar o intervalo (numa outra planilha) A1Big Smile100, mas gostaria que a macro fosse ativada por um "enter" depois de inserir o último dado da linha, ou seja, na coluna D.

     

    Tks

    Jerson

    Tuesday, July 15, 2008 7:58 PM
  • Jerson,

    Veja se assim te atende:

    Code Snippet

    Private Sub Worksheet_Change(ByVal Target As Range)
    'Se a célula editada for a D100, o intervalo A1:A100 será classificado
    Dim Ajuste As Range
    Set Ajuste = [A1:D100]
    If Target.Address = "$D$100" Then
    Worksheets(1).Ajuste.Sort (Worksheets(1).Cells(1, 1))
    End If

    End Sub

     

     

    [ ]s

     

     

    Wednesday, July 16, 2008 10:20 AM
  • Olá..

    Ponha este código na planilha...Quando a célula d100 estiver ativa e for pressionado o enter a rotina organiza é executada...

    Code Snippet

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If ActiveCell.Address = "$D$100" Then
            Application.OnKey "{RETURN}", "Organiza"
        Else
            Application.OnKey "{RETURN}", ""
        End If
    End Sub

     

     

    Ponha este código no módulo

     

    Code Snippet

    Sub Organiza()
        Worksheets(1).Range("A1:D100").Sort (Worksheets(1).Cells(1, 1))
    End Su

     

     

    Até..
    Wednesday, July 16, 2008 12:20 PM
  •  Adilson Soledade wrote:

    Jerson,

    Veja se assim te atende:

    Code Snippet

    Private Sub Worksheet_Change(ByVal Target As Range)
    'Se a célula editada for a D100, o intervalo A1:A100 será classificado
    Dim Ajuste As Range
    Set Ajuste = [A1:D100]
    If Target.Address = "$D$100" Then
    Worksheets(1).Ajuste.Sort (Worksheets(1).Cells(1, 1))
    End If

    End Sub

     

     

    [ ]s

     

     

     

    Desculpe Adilson, acho que não me expliquei direito... eu preciso que a rotina "organiza" seja executada a cada nova linha editada, mas somente quando eu der o enter na coluna D.

     

    Tks

    Jerson

    Wednesday, July 16, 2008 12:50 PM
  • Se estiver na coluna D e pressionar enter será executado a rotina organiza..

     

    Code Snippet

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If ActiveCell.Column = 4 Then
            Application.OnKey "{RETURN}", "Organiza"
        Else
            Application.OnKey "{RETURN}", ""
        End If
    End Sub

     

     

    Wednesday, July 16, 2008 2:16 PM
  •  EvangelistaLion wrote:

    Se estiver na coluna D e pressionar enter será executado a rotina organiza..

    Code Snippet

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If ActiveCell.Column = 4 Then
            Application.OnKey "{RETURN}", "Organiza"
        Else
            Application.OnKey "{RETURN}", ""
        End If
    End Sub

     

     

     

    Adilson, tá retornando uma msg "A macro 'organiza' não pode ser encontrada". Não teria que informar o intervalo a ser organizado? O intervalo é A1Big Smile100 com base na coluna A.

     

    Tks

    Jerson

    Wednesday, July 16, 2008 2:30 PM
  • Pensei que já tinha posto o código no módulo..

    Ponha este código no módulo

     

    Code Snippet

    Sub Organiza()
        Worksheets(1).Range("A1:D100").Sort (Worksheets(1).Cells(1, 1))
    End Su

     

     

    Até..Eu não sou o Adilson..rsrs
    Wednesday, July 16, 2008 2:38 PM
  •  EvangelistaLion wrote:

    Pensei que já tinha posto o código no módulo..

    Ponha este código no módulo

     

    Code Snippet

    Sub Organiza()
        Worksheets(1).Range("A1:D100").Sort (Worksheets(1).Cells(1, 1))
    End Su

     

     

    Até..Eu não sou o Adilson..rsrs

     

    Desculpe Evangelista... Bem, agora o enter não funciona... em nenhuma célula da planilha.

     

     

    Tks

    Jerson

    Wednesday, July 16, 2008 2:58 PM
  • Agora vai funcionar..

     

    Code Snippet

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If ActiveCell.Column = 4 Then
            Application.OnKey "{RETURN}", "Organiza"
        Else
            Application.OnKey "{RETURN}"
        End If
    End Sub

     

     

    Wednesday, July 16, 2008 5:22 PM
  •  EvangelistaLion wrote:

    Agora vai funcionar..

    Code Snippet

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        If ActiveCell.Column = 4 Then
            Application.OnKey "{RETURN}", "Organiza"
        Else
            Application.OnKey "{RETURN}"
        End If
    End Sub

     

     

     

    Ainda não foi desta vez, Evangelista... continua travando o enter.

     

    Tks

    Jerson

     

    Wednesday, July 16, 2008 5:48 PM
  • Fica travado só na coluna D, pois quando está nesta coluna D o enter equivale a rotina organiza...Quando não está na coluna D ele volta ao normal...Não está deste jeito ou não está do jeito que você precisa??

     

    Wednesday, July 16, 2008 6:14 PM
  •  EvangelistaLion wrote:
    Fica travado só na coluna D, pois quando está nesta coluna D o enter equivale a rotina organiza...Quando não está na coluna D ele volta ao normal...Não está deste jeito ou não está do jeito que você precisa??

     

     

    O enter agora trava somente na coluna D, porém a organização dos dados não está sendo executada.

     

    Tks

    Jerson

    Wednesday, July 16, 2008 6:38 PM
  • Note que a rotina Organiza está sendo executada na planilha um Worksheets(1), se não for a planilha um troque pela correspondente....Aqui funcionou certinho...

    Wednesday, July 16, 2008 7:53 PM
  • Muito bem lembrado meu amigo... este é o tipo do detalhe que principiantes como eu levam dias pra descobrir... hehehe!!!

     

    Valeu, funcionou belezinha... muito obrigado e um grande abraço.

     

    Sds

    Jerson

    Thursday, July 17, 2008 8:22 PM