Vai indietro   Scuola forum (scuo.la) - Forum di discussione per le scuole > Materie di Scuola > Informatica



Top 5 Stats
Latest Posts
Discussione    data, Ora  invio  Risposte  Visite   Forum
Vecchio Quando iniziare attivita fisica dopo intervento appendicite?  19-04, 19:31  Marcos  1  31402   Medicina
Vecchio Quale causa per dolore tra il 1° metatarso e il 1° cuneiforme?  18-04, 18:53  Sigismondo  1  29055   Medicina
Vecchio Come constatare elettrolita forte, debole o non elettrolita?  17-04, 15:24  Abramo  1  24849   Chimica
Vecchio Quali scuole per fare due anni in uno per liceo linguistico?  12-04, 16:14  Luigia  1  16773   Scuola in generale
Vecchio L'AIDS è una malattia con sintomi visibili e riconoscibili?  12-04, 12:03  Edith  1  25201   Medicina
Vecchio Perchè il presscontroll dell'autoclave non si spegne mai?  07-04, 09:11  Marsilio  1  28496   Idraulica
Vecchio Perché colonna pescante si scarica spesso nonostante press control?  06-04, 12:33  karol  1  34037   Idraulica
Vecchio Quali cause per la comparsa di puntini neri nella visione?  06-04, 08:40  Marcos  1  30913   Medicina
Vecchio Proteste contro Istifid per fermare l'allevamento Green Hill  05-04, 15:48  insu  1  26276   Animali, Fiori, Piante
Vecchio Video in italiano sulle campagne in corso di Sea Shepherd  04-04, 09:27  Louis  1  25358   Animali, Fiori, Piante

Rispondi
 
LinkBack Strumenti della discussione Modalità di visualizzazione
  #1 (permalink)  
Vecchio 12-24-2007, 10:34 PM
Administrator
 
Registrato dal: Jun 2007
Messaggi: 641
predefinito Ordinare celle Excel 2007 in maniera relativa in VBA

Ordinare celle Excel 2007 in maniera relativa in VBA


Salve,
con Excel 2003 ero abituato a selezionare con una macro l'intervallo di celle che volevo ordinare e poi scrivere qualcosa del genere:

Quote:
Rows("2:2").Select
Range("F2").Activate
Range(Selection, Selection.End(xlDown)).Select

Selection.Sort Key1:=Range("C1"), Order1:=xlAscending, Key2:=Range("k1") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
Ora, con la versione 2007, la faccenda è un po' cambiata, e la stessa operazione viene registrata più o meno così, nonostante io la registri utilizzando i riferimenti relativi:

Quote:
Range("F2").Select
ActiveCell.Rows("1:1").EntireRow.Select
ActiveCell.Activate
Range(Selection, Selection.End(xlDown)).Select
ActiveWorkbook.Worksheets("Statistiche").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Statistiche").Sort.SortFields.Add Key:=ActiveCell. _
Offset(0, 2).Range("A1:A351"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
ActiveWorkbook.Worksheets("Statistiche").Sort.SortFields.Add Key:=ActiveCell. _
Offset(0, 10).Range("A1:A351"), SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Statistiche").Sort
.SetRange ActiveCell.Range("A1:BQ351")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Il problema è, come si può vedere, che la macro è piena di riferimenti sia al foglio che alla quantità di righe selezionate, ma non va bene perchè il loro numero può variare (il numero di righe selezionate indendo).

Come si può adattare quindi questa macro per far si che ordini le righe selezionate indipendentemente dalla loro quantità e dal foglio in cui si trovano?

Grazie mille
Rispondi quotando
  #2 (permalink)  
Vecchio 01-01-2008, 06:36 PM
Junior Member
 
Registrato dal: Jan 2008
Messaggi: 4
predefinito

Ciao.

Come primo suggerimento, per rendere relativo il foglio su cui lancerai la macro, sostituirei ActiveWorkbook.Worksheets("Statistiche") con Activesheet.

Seconda cosa, per rendere relativo anche la selezione delle celle, dichiarerei una variabile per la selezione delle celle (del tipo Selezione= Selection.Address) da mettere dopo che hai selezionato appunto tutte le celle che ti interessa elaborare (in questo caso dopo Range(Selection, Selection.End(xlDown)).Select). Questa variabile poi la inserirei al posto di tutte le dichiarazioni di Range fissi per ottenere così l'ordinamento in maniera relativa.

Tienici aggiornati
Ciao
Rispondi quotando
  #3 (permalink)  
Vecchio 01-06-2008, 08:21 PM
Administrator
 
Registrato dal: Jun 2007
Messaggi: 641
predefinito

Ho provato così:

codice:
Public Sub Ordina_Click()

Dim selezione

    Range("F2").Select
    ActiveCell.Rows("1:1").EntireRow.Select
    ActiveCell.Activate
    Range(Selection, Selection.End(xlDown)).Select
    
selezione = Selection.Address
    
    ActiveSheet.Sort.SortFields.Clear
    ActiveSheet.Sort.SortFields.Add Key:=selezione, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveSheet.Sort.SortFields.Add Key:=selezione, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveSheet.Sort.SortFields.Add Key:=selezione, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    ActiveSheet.Sort.SortFields.Add Key:=selezione, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveSheet.Sort
        .SetRange selezione
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
  
End Sub
Il problema è che mi da questo errore:

Quote:
errore di run-time '1004':
errore definito dall'applicazione o dall'oggetto
Hai idea come risolvere?
Grazie ancora
Ciao




Rispondi quotando
Rispondi


Regole d'invio
Non puoi inserire discussioni
Non puoi inserire repliche
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è attivo
Le smilie sono attive
Il codice IMG è attivo
il codice HTML è disattivato
Trackbacks are attivo
Pingbacks are attivo
Refbacks are attivo


Discussioni simili
Discussione Ha iniziato questa discussione Forum Risposte Ultimo messaggio
Accedere a celle foglio Excel con javascript phpweb Informatica 0 11-12-2009 10:31 AM
Excel - metodo sort in excel pre 2007 Marcello_DF Informatica 0 04-01-2009 10:09 AM
Verificare la presenza di caratteri semplici in celle Excel Orlando Informatica 1 12-21-2008 06:05 PM
Ordinare dati Excel per un numero di colonne maggiore a tre Scuola Informatica 5 08-20-2008 06:27 PM
Riempendo con i colori le celle Excel, non compare il colore djfulmine Informatica 4 01-11-2008 08:44 PM


Tutti gli orari sono GMT +2. Attualmente sono le 04:42 AM.


© Copyright 2008-2022 powered by sitiweb.re - P.IVA 02309010359 - Privacy policy - Cookie policy e impostazioni cookie