Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

selezionare cella successiva con click

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

selezionare cella successiva con click

Postdi miko » 26/05/13 11:53

salve,
sto iniziando un nuovo progetto ma ho già difficoltà con una macro.
mediante una macro trova, cerco e coloro alcuni valori in un range C-L.
a seconda della quantità di valori trovati su una riga, questi assumono un colore diverso;
se ad esempio vi è un solo numero si ha il colore rosso, se si hanno 2 valori il colore è verde...
questa stessa macro memorizza in un array l'address della prima cella colorata per ogni riga.
fino a qui nessun problema.
quello che sto cercando di realizzare è che ad ogni click sulle celle del range P2:P7 vengano selezionate le prime celle
aventi lo stesso colore poste sulle diverse righe, cioè quelle corrispondenti agli address memorizzati nell'array.
se ad esempio clicco su P2 deve essere selezionata la prima cella di colore rosso nel range C-L ;
ad un click successivo deve essere selezionata la cella successiva dello stesso colore.
così al click su P3 deve essere selezionata la prima cella del range C-L di colore verde;
nel modulo del foglio ho inserito questa macro:
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fine
 With Worksheets("Foglio1")
      If Not Intersect(Target, .Range("P2:P7")) Is Nothing Then
        If ActiveCell.Interior.ColorIndex = xlNone Then Exit Sub
        Miocol = ActiveCell.Interior.ColorIndex
        SUCCESSIVI
     End If
 End With
Letscontinue:
      Exit Sub
Fine:
    MsgBox Err.Description
    Resume Letscontinue
End Sub

invece in un modulo generico ho inserito questa macro:
Codice: Seleziona tutto
Sub SUCCESSIVI()
With Worksheets("Foglio1")
-------------------------------
Select Case Miocol
 
 Case Is = 3
 -------------------------------
-------------------------------

 CelAdr = ActiveCell.Address(RowAbsolute:=False, _
                          ColumnAbsolute:=False)
For Item = LBound(Ar2) To UBound(Ar2)
Adr = Ar2(Item)
If Item = UBound(Ar2) Then GoTo FineAdr
If CelAdr = Adr Then
Adr = Ar2(Item + 1)

FineAdr:
.Range(Adr).Select
Exit Sub
End If
Next Item
End With
End Sub

essendo Ar2 l'array degli address.
la macro SUCCESSIVI funziona se isolata dall'evento SelectionChange, ma in combinazione
vengono selezionate tutte le celle dello stesso colore
fino a raggiungere l'ultima.
non riesco a modificare le macro per raggiungere lo scopo.
forse una diversa soluzione rispetto all'array potrebbe risultare più semplice?
ciao e grazie
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Sponsor
 

Re: selezionare cella successiva con click

Postdi ricky53 » 26/05/13 23:23

Ciao miko,
in tutta sincerità ho provato ad interpretare quanto da te scritto ma ... ho capito poco anzi pochissimo.
Mi sfugge lo scopo di quanto chiedi.
A cosa è collegato il tutto.
Spesso conoscendo l'argomento reale ed avendo la struttura dei dati si può arrivare al risultato atteso e ... un file di esempio aiuterebbe molto.
Puoi essere più chiaro ?

Speriamo che qualche altro utente abbia capito più di me ma è preferibile che tu chiarisca e ci dia altre informazioni.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: selezionare cella successiva con click

Postdi Flash30005 » 27/05/13 07:05

Rivedi la macro in quanto completamente errata
Miocol non è dichiarato public quindi perde il valore in esso contenuto una volta arrivati nel modulo
La select case non occorre se il dato è uno solo, è sufficiente una IF
quindi segui il consiglio di Ricky pubblicando il file

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: selezionare cella successiva con click

Postdi miko » 27/05/13 19:46

buona sera,
vi ringrazio per aver aderito al mio topic;
provo a chiarire la mia richiesta ed i vostri dubbi
aiutandomi con una immagine, che per motivi di peso e spazio ho dovuto
restringere:

Immagine

Nel mio post ho commesso un errore di digitazione, il range interessato non è il range C-L
ma il range C-H.
In riga 1 a partire da O1 inserisco dei numeri, ed una macro trova e colora questi valori
nel range C-H a partire da 5 righe precedenti la riga in grigio, in questo caso la 22, fino all'ultima riga utile.
Noterete che le celle del range N2-S7 hanno colori diversi, per riga, e questi corrispondono ai valori trovati
nel range C-H.
La riga grigia è quella presa in esame ed il sul numero, NRow è public, viene inserito nella macro trova.
A partire dalla riga successiva a quella in grigio, conto quanti valori singoli, ambi, terni,...
sono stati trovati ed inserisco tale conteggio nelle corrispondenti celle colorate di colonna O.
Fino a qui ci sono riuscito.
Quello che non riesco a realizzare e la selezione delle celle successive come di seguito preciso:
cliccando la cella P2, colore turchese, devo selezionare la prima cella turchese dopo la riga in grigio, cioè 75;
ad un secondo click su P2 devo selezionare la seconda cella turchese cioè 42, successiva alla precedente;
e cosi via fino all'ultima, dopo della quale non essendoci altre celle dello stesso colore, il click su P2 non deve produrre alcun effetto.
cliccando invece su P3, colore verde, seleziono la prima cella di colore verde dopo quella in grigio, cioè 74;
ad un click successivo seleziono la cella verde 41, in questo caso non è necessario selezionare tutte le celle dello stesso colore
disposte sulla stessa riga.
Analogo discorso per le altre celle in colonna P.
Se come nel caso in figura in colonna O non si hanno valori, perchè non sono state trovati singoli, ambi etc..
il click sulla corrispondente cella P non devo produrre effetto.
Cliccando in colonna P si avanza di una cella dalla prima all'ultima;
cliccando in colonna Q si indietraggia di una cella dall'ultima fino alla prima successiva a quella in grigio,
quindi ad esempio dalla 40 poi 42 e infine 75.
Vi allego il file, che per lo stesso motivo precedente ho dovuto alleggerire, pieno di tante macro prova inutili,
tranne la macro trova e conta identiche a tante che ho trovato nel forum e modificato nei riferimenti.
Avevo sottolineato nel mio primo post che la "macro trova" inserisce nell'array Ar2, anch'esso public,
gli indirizzi delle celle colorate nella forma F16, D21,...distinguendole per colore;
ma se questa soluzione crea problemi qualunque altra realizzazione è accettabile.
Credo di non aver dimenticato nulla, almeno spero, a chiarimento del quesito.
http://www.filedropper.com/cellesuccessive
grazie e saluti.
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Re: selezionare cella successiva con click

Postdi Flash30005 » 28/05/13 09:26

Nel Vba del foglio inserisci questa macro
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fine
 With Worksheets("Foglio1")
      If Not Intersect(Target, .Range("P2:P7")) Is Nothing Then
        If ActiveCell.Interior.ColorIndex = xlNone Then Exit Sub
        Miocol = ActiveCell.Interior.ColorIndex
        If Miocol <> [Z3] Then
        [Z3] = Miocol
        Range("Z1:Z2").ClearContents
        End If
        SUCCESSIVI
     End If
 End With
Letscontinue:
      Exit Sub
Fine:
    MsgBox Err.Description
    Resume Letscontinue
End Sub


Nel modulo questa
Codice: Seleziona tutto
Public Miocol As Double
Sub SUCCESSIVI()
UR = Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
Rini = [Z1]
Cini = [Z2]
If Rini = "" Then
Rini = 22
Cini = 3
Else
If Cini <> "" Then Cini = Cini + 1
If Cini >= 8 Then
Rini = Rini + 1
Cini = 3
End If
End If
For RR = Rini To UR
For CC = Cini To 8
If Cells(RR, CC).Interior.ColorIndex = Miocol Then
[Z1] = RR
[Z2] = CC
Application.EnableEvents = False
Cells(RR, CC).Select
Application.EnableEvents = True
Exit Sub
End If
Next CC
If CC > 8 Then Cini = 3
Next RR
End Sub


Premetto che non sapendo dove avrai la riga grigia (riga 22?), ho inserito 22 come riga di inizio ma adatterai questo valore secondo le tue esigenze.
Inoltre ho utilizzato le celle Z1, Z2 e Z3 per memorizzare rispettivamente l'ultima riga selezionata, l'ultima colonna e l'ultimo colore
eventualmente, se già utilizzi queste celle, modifica i riferimenti

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: selezionare cella successiva con click

Postdi miko » 02/07/13 20:11

ciao,
non avevo dimenticato questo topic, ma dedicandomi alle altre macro
dello stesso progetto che creavano problemi e data la mia lentezza "creativa"
ho rimandato la risposta.
la tua macro ovviamente funziona, ma per le mie esigenze devo modificarla;
ho notato infatti che:
..ho utilizzato le celle Z1, Z2 e Z3 per memorizzare rispettivamente l'ultima riga selezionata, l'ultima colonna..

cambiando la riga grigia non sempre viene selezionata la prima cella della prima riga e/o colonna successiva
alla riga grigia;
la macro prende da quelle celle gli ultimi valori inseriti;
inserendo del codice tipo:
Codice: Seleziona tutto
range("z1").clearcontents

al cambio di riga credo di riuscire a risolvere il problema.
quello che non riesco a modificare, e per questo chiedo il tuo intervento,
è come selezionare una sola cella per ciascuna riga ad ogni click;
se su una riga ci sono due o più celle dello stesso colore non
è necessario che vengano selezionate ad ogni click, variando la colonna,
tutte le celle della stessa riga ma è sufficiente che venga selezionata una di esse, ad esempio la prima,
ed al click successivo si passi alla riga successiva se vi è.
scusa ancora il ritardo della risposta.
saluti e grazie
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Re: selezionare cella successiva con click

Postdi Flash30005 » 02/07/13 21:35

Ho riletto più volte ciò che hai scritto ma, scusami, non ho capito nulla, sarà stanchezza?

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: selezionare cella successiva con click

Postdi miko » 03/07/13 18:42

ciao,
provo a descrivere in altro modo la modifica che vorrei apportare al tuo codice,
nel quale hai ipotizzato come riga inizio, Rini = 22;
supponiamo che le celle dello stesso colore, in questo esempio colore rosa del terno,
si trovino sulle righe:
riga 24, celle C24 , E24, H24;

riga 26, celle D26, F26, G26;

riga 30, celle E30, G30, H30;

la macro attuale lavora in questo modo:
al primo click su P4 seleziona la prima cella C24;
al secondo click seleziona E24, al terzo H24, al quarto D26, ...,
al sesto G26, al settimo E30,...., al nono H30;

la macro modificata deve invece eseguire questo processo:
al primo click su P4 seleziona la prima cella C24;
al secondo click seleziona D26;
al terzo click seleziona E30;
infine esce dal ciclo non essendoci altre righe,oltre la riga 30,
contenenti celle dello stesso colore.
quindi ad ogni click vi è un avanzamento di riga , e non di colonna.
ciao e grazie
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44


Torna a Applicazioni Office Windows


Topic correlati a "selezionare cella successiva con click":


Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti