Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Trovare una cella a tendina

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

Trovare una cella a tendina

Postdi cd7019 » 31/01/14 22:25

CIAO,

Come posso trovare una cella che contiene un menù a tendina?
il seguente listato produce un errore.

For I4 = 3 To 7
If Cells(I4, 9).Validation = True Then ...
Next I4


Grazie
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Sponsor
 

Re: Trovare una cella a tendina

Postdi Anthony47 » 01/02/14 00:24

Dipende a quale fine... in genere non si va alla ricerca di una cella che contiene la convalida da elenco...
Diciamo che puoi ottenere l' indirizzo delle celle che hanno una convalida con qualcosa come
Codice: Seleziona tutto
VAdr = ActiveCell.SpecialCells(xlCellTypeAllValidation).Address


Se devi cercare le convalide "da elenco" controlli ognuna di queste celle (For Each myCell in Range(VAdr) '(**)) per vedere quali abbian una convalida di tipo "xlValidateList" (If myCell.Validation.Type = xlValidateList Then ...)

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Trovare una cella a tendina

Postdi cd7019 » 01/02/14 14:53

ciao,

scusa ma non ci sono riuscito.

Codice: Seleziona tutto
For I4 = 1 To 20
If Cells(I4, 1).Validation.Type = xlValidateList Then Cells(I4, 1).Interior.ColorIndex = 45
Next I4


produce un errore run-time 1004.


Grazie
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: Trovare una cella a tendina

Postdi Anthony47 » 01/02/14 15:26

Hai approssimato il mio suggerimento:
1- PRIMA TROVI l' indirizzo delle celle che hanno una convalida
2- POI controlli ognuna di queste celle (quelle appartenenti agli indirizzi trovati al punto 1) per vedere quali abbian una convalida di tipo "xlValidateList"

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Trovare una cella a tendina

Postdi cd7019 » 01/02/14 21:08

Funziona perfettamente.


Grazie, Grazie, Grazie.
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: Trovare una cella a tendina

Postdi cd7019 » 04/02/14 21:00

Codice: Seleziona tutto
VADR = [I3:I7].SpecialCells(xlCellTypeAllValidation).Address
For Each MYCELL In Range(VADR)
    If MYCELL.Validation.Type = xlValidateList Then Range(VADR).Interior.ColorIndex = 45
    If MYCELL.Validation.Type = xlValidateList Then Range(VADR) = Trim(Left(MYCELL, 2))
Next

i colori dello sfondo sono OK.

Si sono MANIFESTATI 2 problemi:
1) selezionando diversi dati a tendina, vengono visualizzate in tutte le celle le prime due lettere della 1° validation.
torino >>> to vorrei >>> to
milano >>> to vorrei >>> mi
genova >>> to vorrei >>> ge

2) quando l'ho inserito in
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)

mi produce un errore:
spazio nello stack esaurito

Grazie
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: Trovare una cella a tendina

Postdi Anthony47 » 04/02/14 22:46

Hai ancora approssimato il suggerimento (e non e' vero che i colori sono Ok, perche' applicheresti quel colore anche ad eventuali convalide non "da elenco")...
Ok l' indirizzo calcolato in VAdr; adesso devi gestirle una cella alla volta con il For Each myCell in Range(VAdr) /Next. Quindi:
Codice: Seleziona tutto
For Each myCell in Range(VAdr)
If myCell.Validation.Type = xlValidateList Then
    myCell.Range(VADR).Interior.ColorIndex = 45
    myCell.Value = Trim(Left(myCell.Value, 2))
End If
Next myCell


Quanto allo spazio stack esaurito la cosa piu' probabile e' che la tua macro Worksheet_SelectionChange sia autorecursiva, cioe' si reinnesca all' interno del codice macro.
Per evitare questo dovresti inserire Application.EnableEvents = False / Application.EnableEvents = True all' ingresso e all' uscita della macro.
Per altri suggerimenti dovresti postare il codice della tua Worksheet_SelectionChange.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Trovare una cella a tendina":


Chi c’è in linea

Visitano il forum: Zer0Kelvin e 4 ospiti