Condividi:        

[Excel 2010 VBA] convalida dati o combobox?

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

[Excel 2010 VBA] convalida dati o combobox?

Postdi Black.Jack » 20/11/12 20:47

Salve a tutti...


mettiamo il seguente scenario:


un range di celle tipo così: Range("A1:I30") e lo definiamo "pippo".

poi, un'altro range che contiene una lista su colonna unica. non importa dove sia ne quanto sia vasto.

Mi piacerebbe avviare, cliccando una qualsiasi cella del range una sorta di intellisense sulla seconda lista, un po' come nel combobox.
una volta trovato il valore e premuto invio...la cella sottostante si ottiene il valore e il combobox scompare.

Ho notato che il combobox lo si disegna con coordinate cartesiane e non con le classiche coordinate alfanumeriche delle celle.
Il convalida dati poi è proprio privo di intellisense.

Secondo voi è possibile farlo?

A limite potrei costruire un unico combobox, dove con il vba tramite click si designa di volta in volta la "Linked cell"...ma volevo cmq provare con voi a capire se fosse possibile.

grazie! ;)
Win7 + Office 2010 Ita
Xp + Office 2010 Ita
Black.Jack
Utente Junior
 
Post: 93
Iscritto il: 23/06/10 08:40

Sponsor
 

Re: [Excel 2010 VBA] convalida dati o combobox?

Postdi Anthony47 » 21/11/12 01:03

Il combobox e' un oggetto programmabile, quindi se spieghi in dettaglio che cosa vuoi fare credo ce la faremo.

Ciao

PS: Per favore indica la tua configurazione di lavoro: viewtopic.php?f=26&t=97449
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel 2010 VBA] convalida dati o combobox?

Postdi Black.Jack » 21/11/12 14:59

Ciao,


anzitutto grazie, ho ritenuto pratico aggiornare la firma!

in allegato un esempio di ciò che vorrei fare.

http://www.crocko.com/504B5FDC469E4C578 ... rova3.xlsm

Vorrei però che ci fosse una combobox legata al click su cella e non un convalida dati.

:)
Win7 + Office 2010 Ita
Xp + Office 2010 Ita
Black.Jack
Utente Junior
 
Post: 93
Iscritto il: 23/06/10 08:40

Re: [Excel 2010 VBA] convalida dati o combobox?

Postdi Flash30005 » 21/11/12 21:28

In un modulo inserisci questo codice
Codice: Seleziona tutto
Public CellaC, CellaR As Long

Sub Combo()
Application.EnableEvents = False
UserForm1.ComboBox1.RowSource = "Tabella!D30:D35"
UserForm1.ComboBox1.Value = ""
Application.EnableEvents = True
UserForm1.Show
End Sub


Dopo aver creato una UserForm (UserForm1)
e un Combobox (ComboBox1)
inserisci nel codice del combobox (selezionandolo e tasto destro-> visualizza codice)
inserisci queste righe
Codice: Seleziona tutto
Private Sub ComboBox1_Change()
Cells(CellaR, CellaC).Value = ComboBox1.Value
UserForm1.Hide
End Sub


Poi nel vba del foglio "Tabella"
inserisci queste righe
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
CellaR = Target.Row
CellaC = Target.Column
 Combo
End Sub

Ovunque clicchi appare il Combox (devi determinare in quali range fare questa operazione)
e alla prima selezione inserirai nella cella ciò che hai selezionato
Il combobox sparisce
allego il file
Download

ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel 2010 VBA] convalida dati o combobox?

Postdi Anthony47 » 21/11/12 23:29

Descrivo una soluzione basata sul singolo ListBox, con prestazioni diverse da quanto suggerito da Flash; vedi tu.

Inserisci sul foglio un listbox (della serie Controlli ActiveX); assegni alla proprieta' ListFillRange le celle che contengono l' elenco da visualizzare; imposti una Height proporzionata al numero di righe che vuoi far visualizzare.

Poi gli assegni questo codice
Codice: Seleziona tutto
Private Sub ListBox1_Change()
ListBox1.Visible = False
ActiveCell.Value = ListBox1.Text
End Sub

Infine vai in testa alla macro di Worksheet_SelectionChange che e' gia' presente (di cui non ho valutato funzionalita' e scopo) e aggiungi questo codice
Codice: Seleziona tutto
CheckArea = "A1:B20"     '<<<
If Not Application.Intersect(Target, Range(CheckArea)) Is Nothing _
 And Selection.Count = 1 Then
    ListBox1.Top = Target.Top
    ListBox1.Left = Target.Offset(0, 1).Left
    ListBox1.Visible = True
Else
    ListBox1.Visible = False
End If

Personalizza l' istruzione marcata <<<, che rappresenta l' intervallo a cui vuoi associare il listbox.

In questo modo otterrai il seguente comportamento:
-quando selezioni una cella dell' intervallo specificato, il listbox sara' visualizzato accanto a quella cella
-selezionando altre celle il listbox viene nascosto
-selezionando un valore dal listbox questo viene inserito nella cella attiva e il listbox nascosto

Il ListBox ha un comportamento piu' lineare, in questa applicazione, rispetto al combobox (che comunque si gestisce in modo analogo)

Immagino che su questo spunto sara' necessario fare qualche personalizzazione.

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

Re: [Excel 2010 VBA] convalida dati o combobox?

Postdi Black.Jack » 22/11/12 07:07

ciao grazie a tutti e due!

per prima cosa testo il metodo di flash e poi quello tuo Anthony.

x Flash: come mai continua ad apparirmi il convalida dati nonostante non esista + nel selection change?
è per colpa sua che l'intellisense del combobox è sparito?

Se uso il combobox in pratica alla prima lettera inputata si chiude l'operazione con la prima occorrenza nella lista con la lettera digitata!

x Anthony: il Listbox ha l'intellisense?
Win7 + Office 2010 Ita
Xp + Office 2010 Ita
Black.Jack
Utente Junior
 
Post: 93
Iscritto il: 23/06/10 08:40

Re: [Excel 2010 VBA] convalida dati o combobox?

Postdi Flash30005 » 22/11/12 07:49

Nel file io non ho eliminato la convalida
se vuoi elimina tutte le convalide che avevi inserito oppure utilizza un altro foglio (trascrivendo il codice in selection_change).

Il comando Change, purtroppo, accetta ogni variazione da tastiera pertanto la parola va selezionata tramite finestra )freccia) del combobox

per avere la possibilità di digitare una iniziale dovresti usare questo codice
Codice: Seleziona tutto
Private Sub ComboBox1_DropButtonClick()
Cells(CellaR, CellaC).Value = ComboBox1.Value
UserForm1.Hide
End Sub


che evita l'inconveniente precedente e la parola viene inserita dopo che l'avrai selezionata tramite la finestra del Combobox (freccia)

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [Excel 2010 VBA] convalida dati o combobox?

Postdi Anthony47 » 22/11/12 14:26

Credo di aver capito cosa intendi, e la soluzione da me proposta non ha una cosa simile all' intellisense; ci vorrebbe una diversa articolazione del codice, ma credo che Flash sia avanti in quella strada.

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


Torna a Applicazioni Office Windows


Topic correlati a "[Excel 2010 VBA] convalida dati o combobox?":


Chi c’è in linea

Visitano il forum: Nessuno e 33 ospiti