Condividi:        

Ordinare selezione colonne

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Ordinare selezione colonne

Postdi PcBase » 06/01/12 18:47

Ciao
Vorrei avere una lista univoca, per ottenere le singole colonne in una selezione multipla
Quale modifica del codice mi consigliate

Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim tArr() As Variant
    ReDim tArr(0)
    For Each celle In Target
        i = i + 1
        tArr(UBound(tArr)) = celle.Column
        ReDim Preserve tArr(UBound(tArr) + 1)
    Next
    ReDim Preserve tArr(UBound(tArr) - 1)   '???
    For Each COLONNA In tArr()
        MsgBox COLONNA
    Next
End Sub


Se possibile chiedo di aggiornare la lista ad ogni aggiunta di nuove selezioni di colonna
Windows xp + Office 2003 Ita
Windows8 Office 2013
PcBase
Utente Senior
 
Post: 143
Iscritto il: 24/02/11 23:26

Sponsor
 

Re: Ordinare selezione colonne

Postdi Anthony47 » 06/01/12 21:10

Perdona, non mi e' chiaro da quali dati parti e che cosa vorresti ottenere; puoi allegare uno screenshot con un esempio (dati di partenza e dati da generare)?

Ciao, ti aspettiamo.
Avatar utente
Anthony47
Moderatore
 
Post: 19217
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Ordinare selezione colonne

Postdi PcBase » 06/01/12 22:37

Ciao

Ho adattato un codice che mi è stato segnalato, qui quando si preme il tasto CTRL e si seleziona un altro range elenca tutte le colonne coinvolte.
Ora manca solo il confronto attivato da: Worksheet_SelectionChange
Occorre analizzare se la succesiva selezione di colonne rimane invariata.

http://www.sendspace.com/file/ocuk1x
Windows xp + Office 2003 Ita
Windows8 Office 2013
PcBase
Utente Senior
 
Post: 143
Iscritto il: 24/02/11 23:26

Re: Ordinare selezione colonne

Postdi Anthony47 » 07/01/12 00:13

Sempre dubbioso di aver afferrato... Comunque forse ti puo' aiutare questo codice a inizio della Worksheet_SelectionChange?
Codice: Seleziona tutto
Public pippo As String  'Pubblica nel modulo; NELLA PRIMA RIGA del modulo
'
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Columns.Count = 1 Then Exit Sub
If pippo = Target.Resize(1, Target.Columns.Count).EntireColumn.Address Then Exit Sub
pippo = Target.Resize(1, Target.Columns.Count).EntireColumn.Address
    Dim tArr() As Variant
'etc etc

Immagino che tutto quell' ambadaran di SORTSDARRAY e UNIQUEVALUES ti servono per fare cose diverse da quele che hai qui descritto. Perche' se fossero strumentali solo a ottenere l' elenco delle colonne selezionate basterebbero queste istruzioni
Codice: Seleziona tutto
'Inizio come detto sopra
For Each cella In Application.Intersect(Target, Target.Range("A1").Resize(1, Columns.Count - _
    Target.Range("A1").Column))
   MsgBox (cella.Column)
Next cella
End Sub

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19217
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Ordinare selezione colonne

Postdi PcBase » 07/01/12 00:47

Ciao

Per meglio comprendere la richiesta
Le posizioni delle righe proposte non hanno alcun effetto sul risultato finale, queste sono solo un esempio

Il codice proposto purtroppo non basta.
Volevo selezionando un range tipo: E5:G6 visualizzare: 5 - 6 - 7
Premendo il tasto Ctrl aggiungo una nuova selezione tipo B4:B10 visualizzare: 2 - 5 - 6 - 7
Se continuo e aggiungo sempre premendo il tasto Ctrl un ennesima selezione: D12:F12 visualizzare: 2 - 3 - 4 - 5 - 6 - 7

Fatto questo se la nuova aggiunta modifica l'elenco in uscita attivare il ciclo successivo (questo è l'evento richiesto)
Windows xp + Office 2003 Ita
Windows8 Office 2013
PcBase
Utente Senior
 
Post: 143
Iscritto il: 24/02/11 23:26

Re: Ordinare selezione colonne

Postdi Anthony47 » 07/01/12 03:05

Sempre a tentoni...
Codice: Seleziona tutto
Public pippo As String
'
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim myCol() As Boolean, I As Long
If Target.Count = 1 Then Exit Sub
ReDim myCol(100)
For Each myCell In Target
    If myCell.Column > UBound(myCol, 1) Then ReDim Preserve myCol(UBound(myCol, 1) + 100)
    myCol(myCell.Column) = True
Next myCell
For I = 1 To UBound(myCol, 1)
    If myCol(I) = True Then
        'MsgBox (i)    '<<++ Serve? (vedi **)
        pippo1 = pippo1 & I & "-"
    End If
Next I
If pippo1 = pippo Then Exit Sub
pippo = pippo1
MsgBox (pippo)   '<< Oppure ++ (vedi sopra)
'
'le tue istruzioni
'
End Sub

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19217
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Ordinare selezione colonne

Postdi PcBase » 07/01/12 08:48

Hi,

Più semplice di così, senza tante complicazioni per ottenere il risultato del codice presentato
Poi: '<<++ Serve? (vedi **) certo qui aggiorno un array per la mia successiva elaborazione
Windows xp + Office 2003 Ita
Windows8 Office 2013
PcBase
Utente Senior
 
Post: 143
Iscritto il: 24/02/11 23:26


Torna a Applicazioni Office Windows


Topic correlati a "Ordinare selezione colonne":


Chi c’è in linea

Visitano il forum: Nessuno e 32 ospiti