Discussione:
Convalida - Elenco
(troppo vecchio per rispondere)
Andrea.9
2009-06-10 15:15:46 UTC
Permalink
Ciao a tutti.
Volevo sapere se è possibile allungare la finestra dell'elenco che
compare a margine di una cella quando si utilizza "convalida" ->
consenti "elenco" -> "elenco nella cella"
ho infatti un elenco di circa 22 voci ma ne visualizza solo 8 alla
volta con barra di scorrimento laterale.
grazie
Andrea.9
2009-06-10 15:23:37 UTC
Permalink
Post by Andrea.9
Ciao a tutti.
Volevo sapere se è possibile allungare la finestra dell'elenco che
compare a margine di una cella quando si utilizza "convalida" ->
consenti "elenco" -> "elenco nella cella"
ho infatti un elenco di circa 22 voci ma ne visualizza solo 8 alla
volta con barra di scorrimento laterale.
grazie
Scusate: EXCEL 2003
Ignazio
2009-06-10 16:33:09 UTC
Permalink
Post by Andrea.9
Ciao a tutti.
Volevo sapere se è possibile allungare la finestra dell'elenco che
compare a margine di una cella quando si utilizza "convalida" ->
consenti "elenco" -> "elenco nella cella"
ho infatti un elenco di circa 22 voci ma ne visualizza solo 8 alla
volta con barra di scorrimento laterale.
grazie
Scusate: EXCEL 2003
Non è possibile.
Però, in alternativa, potresti usare una Casella Combinata che trovi in:
Visualizza > Barra degli strumenti > Moduli.

Se la cella A1 convalida i dati in B1:B22, sovrapponi la Casella Combinata
alla cella A1, fa clic destro sulla casella a imposta:
Formato controllo > Controllo
- Intervallo di input: $B$1:$B$22
- Collegamento cella: $A$1
- Altezza righe: 22
--
Ciao,
Ignazio
RIO: www.riolab.org
Andrea.9
2009-06-11 07:22:15 UTC
Permalink
Post by Ignazio
Non è possibile.
Visualizza > Barra degli strumenti > Moduli.
Se la cella A1 convalida i dati in B1:B22, sovrapponi la Casella Combinata
Formato controllo > Controllo
- Intervallo di input: $B$1:$B$22
- Collegamento cella: $A$1
- Altezza righe: 22
Ti ringrazio.
Ho provato a fare quello che mi hai detto ma non trovo nemmeno i
comandi.
Mi manca qualche componente aggiuntivo ?
Excel 2003
Andrea.9
2009-06-11 07:36:05 UTC
Permalink
Post by Andrea.9
Ti ringrazio.
Ho provato a fare quello che mi hai detto ma non trovo nemmeno i
comandi.
Mi manca qualche componente aggiuntivo ?
Excel 2003
Ho capito ... almeno quasi.
nella cella di selezione mi compare un numero che è la posizione della
stringa rispetto all'elenco e non la scritta stessa.
ad esempio: elenco -> pippo, pluto, paperino
selezione dalla casella combinata paperino
nella cella compare 3

dovendo ripetere l'operazione su molte celle c'è modo di farlo per un
intervallo di celle e non ripetere l'operazione per ciascuna cella?

grazie
Nur
2009-06-11 17:12:41 UTC
Permalink
"Andrea.9" <***@eld-cauvin.it> ha scritto nel messaggio news:ace8039e-4146-4e68-b77c-***@y9g2000yqg.googlegroups.com...

Buongiorno Andrea.9
Post by Andrea.9
Ho capito ... almeno quasi.
nella cella di selezione mi compare un numero che è la posizione della
stringa rispetto all'elenco e non la scritta stessa.
ad esempio: elenco -> pippo, pluto, paperino
selezione dalla casella combinata paperino
nella cella compare 3
Non ho capito cosa intendi.
Post by Andrea.9
dovendo ripetere l'operazione su molte celle c'è modo di farlo per un
intervallo di celle e non ripetere l'operazione per ciascuna cella?
Se vuoi provare una soluzione 'artigianale':

- dal menù => visualizza => barre degli strumenti scegli 'strumenti di
controllo'

Dalla finestra degli Strumenti di controllo clicchi sull'icona della casella
combinata e la 'disegni' nel foglio.
Puoi metterla dove vuoi e grande quanto vuoi.
Poi clicchi sull'icona delle Proprietà (o fai clic destro sulla casella e
poi scegli Proprietà) e nella proprietà (name) assegni il nome MyCombo
(questo è importante).

Ammettendo che sul foglio tu abbia già la convalida dati impostata,
seleziona l'intervallo di celle interessate e nel menù convalida 'elenco'
togli la spunta da [ ] Elenco nella cella.

Fai clic col tasto destro del mouse sulla linguetta del foglio e incolla:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

On Error GoTo ErrorHandler
If Target.Cells.Count > 1 Then
'do nothing
Else

With Me.MyCombo
.Visible = False
.LinkedCell = ""
.Value = ""

If Target.Validation.Type = 3 Then
Application.EnableEvents = False
.Top = Target.Top
.Left = Target.Left
.Height = Target.Height
.Width = Target.Width
.Visible = True
.ListFillRange = Evaluate(Target.Validation.Formula1).Address
.ListRows = Evaluate(Target.Validation.Formula1).Rows.Count
.LinkedCell = Target.Address
End If
End With
End If

ErrorHandler:
Application.EnableEvents = True
End Sub

E' limitata al caso in cui la convalida sia da elenco.

Ciao, Nur
Andrea.9
2009-06-12 07:11:23 UTC
Permalink
Post by Nur
Buongiorno Andrea.9
Post by Andrea.9
Ho capito ... almeno quasi.
nella cella di selezione mi compare un numero che è la posizione della
stringa rispetto all'elenco e non la scritta stessa.
ad esempio: elenco -> pippo, pluto, paperino
selezione dalla casella combinata paperino
nella cella compare 3
Non ho capito cosa intendi.
Post by Andrea.9
dovendo ripetere l'operazione su molte celle c'è modo di farlo per un
intervallo di celle e non ripetere l'operazione per ciascuna cella?
- dal menù => visualizza => barre degli strumenti scegli 'strumenti di
controllo'
Dalla finestra degli Strumenti di controllo clicchi sull'icona della casella
combinata e la 'disegni' nel foglio.
Puoi metterla dove vuoi e grande quanto vuoi.
Poi clicchi sull'icona delle Proprietà (o fai clic destro sulla casella e
poi scegli Proprietà) e nella proprietà (name) assegni il nome MyCombo
(questo è importante).
Ammettendo che sul foglio tu abbia già la convalida dati impostata,
seleziona l'intervallo di celle interessate e nel menù convalida 'elenco'
togli la spunta da [ ] Elenco nella cella.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo ErrorHandler
If Target.Cells.Count > 1 Then
'do nothing
Else
 With Me.MyCombo
     .Visible = False
     .LinkedCell = ""
     .Value = ""
    If Target.Validation.Type = 3 Then
    Application.EnableEvents = False
            .Top = Target.Top
            .Left = Target.Left
            .Height = Target.Height
            .Width = Target.Width
            .Visible = True
            .ListFillRange = Evaluate(Target.Validation.Formula1).Address
            .ListRows = Evaluate(Target.Validation.Formula1).Rows.Count
            .LinkedCell = Target.Address
    End If
 End With
End If
Application.EnableEvents = True
End Sub
E' limitata al caso in cui la convalida sia da elenco.
Ciao, Nur
Andrea.9
2009-06-12 07:13:58 UTC
Permalink
Post by Nur
Non ho capito cosa intendi.
hai capito benissimo !!!
se la voglio ????
il gelato artigianale è il più buono.

funziona che è una meraviglia.
grazie molte
Andrea.9
2009-06-12 08:28:46 UTC
Permalink
Post by Andrea.9
grazie molte
un chiarimento:
è normale che non non funzioni più il copia-incolla?
eventualmente si può sbloccare?
Nur
2009-06-12 09:34:34 UTC
Permalink
Post by Andrea.9
grazie molte
è normale che non non funzioni più il copia-incolla?
eventualmente si può sbloccare?
Sì, per come l'ho scritta io è normale... perché non ci avevo pensato....
Vedi l'inesperienza... :-)

Prova così:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

On Error GoTo ErrorHandler
If Target.Cells.Count > 1 Or _
Application.CutCopyMode > 0 Then 'ho solo variato qui
'do nothing
Else

With Me.MyCombo
.Visible = False
.LinkedCell = ""
.Value = ""

If Target.Validation.Type = 3 Then
Application.EnableEvents = False
.Top = Target.Top
.Left = Target.Left
.Height = Target.Height
.Width = Target.Width
.Visible = True
.ListFillRange = Evaluate(Target.Validation.Formula1).Address
.ListRows = Evaluate(Target.Validation.Formula1).Rows.Count
.LinkedCell = Target.Address
End If
End With
End If

ErrorHandler:
Application.EnableEvents = True
Exit Sub

End Sub

Sicuramente esistono modi più intelligenti, io ho solo evitato che il codice
venga eseguito se la modalità CutCopyMode è attiva. L'ho fatto perché ho
pensato che se stai facendo copia-incolla significa che non ti serve
selezionare l'elenco a discesa.

Ciao, Nur
Andrea.9
2009-06-15 09:36:24 UTC
Permalink
Post by Nur
io ho solo evitato che il codice
venga eseguito se la modalità CutCopyMode è attiva. L'ho fatto perché ho
pensato che se stai facendo copia-incolla significa che non ti serve
selezionare l'elenco a discesa.
Ti ringrazio, ora è OK
(il copia incolla serve per altre parti del foglio)
Nur
2009-06-15 10:47:43 UTC
Permalink
Post by Nur
io ho solo evitato che il codice
venga eseguito se la modalità CutCopyMode è attiva. L'ho fatto perché ho
pensato che se stai facendo copia-incolla significa che non ti serve
selezionare l'elenco a discesa.
Ti ringrazio, ora è OK
(il copia incolla serve per altre parti del foglio)

------------------------
Mi rendo conto che forse quello che ho scritto qui sopra può essere
erroneamente interpretato.
Non intendevo dire: a che ti serve il copia-incolla?
Anzi!
Intendevo dire che, dopo la mia modifica, la combobox non viene visualizzata
*se* stai facendo copia-incolla.

Forse potrebbe esserti utile questa aggiunta, che ti consente di passare
alla cella sottostante con la pressione del tasto [invio].

Private Sub MyCombo_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
If KeyCode = vbKeyReturn Then
ActiveCell.Offset(1, 0).Activate
Else
End If
End Sub

Ciao, Nur
Andrea.9
2009-06-15 12:13:49 UTC
Permalink
Post by Nur
Forse potrebbe esserti utile questa aggiunta, che ti consente di passare
alla cella sottostante con la pressione del tasto [invio].
nuovamente grazie

Ignazio
2009-06-12 07:56:47 UTC
Permalink
Post by Andrea.9
Ti ringrazio.
Ho provato a fare quello che mi hai detto ma non trovo nemmeno i
comandi.
Mi manca qualche componente aggiuntivo ?
Excel 2003
Ho capito ... almeno quasi.
nella cella di selezione mi compare un numero che è la posizione della
stringa rispetto all'elenco e non la scritta stessa.
ad esempio: elenco -> pippo, pluto, paperino
selezione dalla casella combinata paperino
nella cella compare 3

dovendo ripetere l'operazione su molte celle c'è modo di farlo per un
intervallo di celle e non ripetere l'operazione per ciascuna cella?

---------------------
RISPOSTA

Ciao Andrea,
hai ragione, provavo con elenco di numeri e non mi accorgevo della cosa che
segnali, che avevo proprio dimenticato.
Con Casella Combinata di "Moduli" dovresti usare una cella di appoggio.

Se A1 è la cella da convalidare e B1:B22 è l'intervallo che contiene
l'elenco di dati, usa la cella C1 come cella di appoggio.
Clic destro sulla casella Casella Combinata e scegli:
Formato controllo > Controllo
- Intervallo di input: $B$1:$B$22
- Collegamento cella: $C$1
- Altezza righe: 22
OK

Infine, nella cella A1 immetti la formula:
=INDICE(B1:B22;C1)

Verifica che tutto funziona come dovrebbe, quindi sovrapponi la Casella
Combinata alla cella A1.
--
Ciao,
Ignazio
RIO: www.riolab.org
Andrea.9
2009-06-15 10:00:02 UTC
Permalink
Post by Ignazio
=INDICE(B1:B22;C1)
Verifica che tutto funziona come dovrebbe, quindi sovrapponi la Casella
Combinata alla cella A1.
OK funziona a dovere, grazie.
Continua a leggere su narkive:
Loading...