2014-12-19 24 views
8

ho prossimo form sviluppato in VBA, che prende informazioni da un foglio di lavoro per la visualizzazione di informazioniordinamento dei dati foglio di lavoro i valori di colonna con Excel VBA

enter image description here

voglio ordinare tutte le informazioni aphabetically da un segmento, questo è il codice:

Function llenarDatosTabla() 

    Dim vList As Variant 
    Dim ws As Worksheet: Set ws = Worksheets(BD_PRODXSIST) 

    ListBox1.Clear 

    With ws 
     If (IsEmpty(.Range("AA2").Value) = False) Then 

      Dim ultimoRenglon As Long: ultimoRenglon = devolverUltimoRenglonDeColumna("A1", BD_PRODXSIST) 

      vList = ws.Range("AA2:AA" & ultimoRenglon & ":AL2").Value 

      If IsArray(vList) Then 
       Me.ListBox1.List = vList 
      Else 
       Me.ListBox1.AddItem (vList) 
      End If 

     End If 

     Me.ListBox1.ListIndex = -1 

    End With 




    Set vList = Nothing 
    Set ws = Nothing 
End Function 

come renderlo ordinato da 'AD' (SEGMENTO) colonna ???

risposta

9

È possibile ordinare il vostro foglio di lavoro Excel in ordine crescente istruzione using VBA come il seguente:

Columns("A:XFD").Sort key1:=Range("AD:AD"), order1:=xlAscending, Header:=xlYes 

Nota: nel campo della colonna Columns("A:XFD") invece di XFD immettere l'ultima colonna utilizzato pertinente al vostro caso, ad esempio, Columns("A:DD").

Spero che questo possa essere d'aiuto.

+0

ha funzionato !!! grazie – Jesus

+0

Sei il benvenuto! Buona fortuna con il tuo progetto! Cordiali saluti, –

+0

Ehi qualche volta ottengo questo errore: 1004 nel riferimento di ordinamento tempo di esecuzione non valido – Jesus

5

Per ordinare una tabella di dati, utilizzare Excel Nomi in combinazione con la funzione CurrentRegion. Questo è meno rischioso dei riferimenti alle colonne hard-coding e può essere fatto in due semplici passaggi.

Il motivo per cui è preferibile specificare le colonne è che se si ottengono le colonne errate o si modificano in un secondo momento, i dati verranno scramble! Quando si esegue l'ordinamento, le celle in qualsiasi colonna omessa rimarranno dove sono, diventando parte delle righe errate. E questo è esattamente ciò che accadrà se aggiungerai ulteriori colonne in seguito, a meno che non ti ricordi di aggiornare il tuo VBA.

Ecco i due semplici passaggi per l'utilizzo di questo approccio. Per questo esempio, ho scelto una tabella di dati con quattro colonne e quattro righe:

enter image description here

Stiamo per ordinare per COL3 decrescente. Le celle nelle altre tre colonne condividono valori identici, consentendoci di verificare facilmente che siano tutte allineate alle righe corrette.

Fase 1: scegliere una cella della tabella di dati che è improbabile che mai essere rimosso, come ad esempio l'intestazione di una colonna che si intende rendere permanenti, e definire un nome per questa cella. È possibile definire il nome selezionando la cella e digitando direttamente nel menu a discesa Nome di Excel sopra il foglio di lavoro. Qui ho usato il nome RegionTag:

enter image description here

Subito, CurrentRegion possono fare riferimento l'intera tabella di dati proprio da questo. Potete vederlo in azione, se si codifica una linea di VBA per selezionare la tabella:

Range("RegionTag").CurrentRegion.Select 

Questo è il risultato:

enter image description here

Questo è solo per l'illustrazione, che mostra la potenza del Nome/Combinazione CurrentRegion. Non è necessario selezionare la tabella per ordinarla.

Fase 2: definire un secondo nome, questa volta per la colonna che si desidera ordinare:

enter image description here

assicurarsi che il nome si riferisce a tutta la colonna selezionata facendo clic sull'intestazione di colonna , piuttosto che solo un intervallo di celle nella colonna.

Questo è tutto! Con questi due nomi definiti, siamo in grado di ordinare la tabella dei dati senza preoccuparsi di noi con le sue righe e colonne, anche se più sono aggiunti in seguito:

Range("RegionTag").CurrentRegion.Sort _ 
    key1:=Range("SortCol"), order1:=xlDescending, Header:=xlYes 

Qui è la nostra tabella di dati allineati utilizzando la dichiarazione di cui sopra:

enter image description here