Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Combobox : doppia convalida

181 views
Skip to first unread message

Lukas

unread,
Jan 25, 2010, 4:57:28 AM1/25/10
to
Ciao a tutti ,
eccomi qua di nuovo alle prese con VBA e i soliti problemi riscontrati
da un principiante come me :)

Volevo semplicemente creare due combobox con doppia convalida .. ora
se uno i normali menù a tendina
e questo semplice codice nel foglio 1 :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Rows.Count + Target.Columns.Count = 2 Then
If Not Intersect(Target, Range("zona")) Is Nothing Then
Select Case Target.Column - Range("zona").Column + 1
Case 1
Target.Offset(0, 1).Interior.ColorIndex = 15
If Len(Target) = 0 And Len(Target.Offset(0, 1)) = 0 Then
Target.Offset(0, 1).Interior.ColorIndex = xlNone
End If
Case 2
Target.Interior.ColorIndex = xlNone
If Len(Target) = 0 And Len(Target.Offset(0, -1)) > 0 Then
Target.Interior.ColorIndex = 15
End If
End Select
End If
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Rows.Count + Target.Columns.Count = 2 Then
If Not Intersect(Target, Range("zona").Columns(2)) Is Nothing Then
Worksheets("Foglio1").Range("celladicontrollo") = Target.Offset(0, -1)
End If
End If
End Sub

tutto mi torna nel senso che selezionando dal primo menu una voce
automaticamente la seconda tendina consente la scelta dei relativi
valori ...
ma se volessi farlo tramite userform e combobox .. ovvero in base a
cio che seleziono nella prima combo mi consente di selezionare
determinati valori nella seconda :)

Grazie Mille per l' aiuto !

Luca

Mauro Gamberini

unread,
Jan 25, 2010, 5:39:51 AM1/25/10
to
tutto mi torna nel senso che selezionando dal primo menu una voce
automaticamente la seconda tendina consente la scelta dei relativi
valori ...
ma se volessi farlo tramite userform e combobox .. ovvero in base a
cio che seleziono nella prima combo mi consente di selezionare
determinati valori nella seconda :)
********************************************

Semplificando, uno dei modi possibili.

Foglio1 con tabella in An:Bn.
UserForm con 2 ComboBox.
Al caricamento della UserForm voglio che nella
ComboBox1 siano riportati in modo univoco
i dati presenti in colonna A.
Se seleziono un dato in ComboBox1,
voglio che i dati relativi a quella selezione presenti
in colonna B, vengano riportati nella ComboBox2.
Questo il codice della UserForm:

Option Explicit

'variabile utilizzate da tutta la UserForm
Private sh As Worksheet
Private wk As Workbook

'evento scatenato all'avvio della UserForm
Private Sub UserForm_Activate()
'dichiaro le variabili
Dim col As Collection
Dim v As Variant
Dim lng As Long
'metto un riferimento al workbook
'che contiene il codice
Set wk = ThisWorkbook
'metto un riferimento al foglio
'con la tabella(qui Foglio1)
With wk
Set sh = .Worksheets("Foglio1")
End With
'creo la Collection
Set col = New Collection
'rendo univoci i dati presenti in
'colonna A del Foglio1 inserendoli
'nella Collection
On Error Resume Next
With sh
For lng = 2 To .Range("A" & _
.Rows.Count).End(xlUp).Row
col.Add .Cells(lng, 1).Value, _
CStr(.Cells(lng, 1).Value)
Next
End With
'carico la ComboBox1
For Each v In col
With Me.ComboBox1
.AddItem v
End With
Next

'Set a Nothing delle variabili oggetto
Set col = Nothing

End Sub

'evento scatenato al click su di una voce
'della ComboBox1; serve per selezionare
'le voci da inserire in ComboBox2
Private Sub ComboBox1_Click()
'dichiaro le variabili
Dim lng As Long
With Me.ComboBox2
'pulisco la ComboBox2
.Clear
'carico i dati nella ComboBox2
For lng = 2 To sh.Range("A" & _
sh.Rows.Count).End(xlUp).Row
If sh.Cells(lng, 1).Value = _
Me.ComboBox1.Text Then
.AddItem sh.Cells(lng, 2).Value
End If
Next
End With
End Sub

'evento scatenato alla distruzione della UserForm
Private Sub UserForm_Terminate()
'Set a Nothing delle variabili oggetto
Set sh = Nothing
Set wk = Nothing
End Sub


Vedi un po' se riesci ad adattare.

Il file utilizzato per l'esempio, puoi
scaricarlo(fra qualche minuto) qui:
http://www.maurogsc.eu/esemping10/combocombo.zip

Grazie per l'attenzione.

--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads


Lukas

unread,
Jan 26, 2010, 3:45:09 AM1/26/10
to
On 25 Gen, 11:39, "Mauro Gamberini"
<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> cut <

Grazie mille perfetto come sempre ed estremamente versatile

Grazie mille dell' attenzione e della disponibilità

Luca

Mauro Gamberini

unread,
Jan 26, 2010, 5:15:49 AM1/26/10
to
Grazie mille perfetto come sempre ed estremamente versatile

Grazie mille dell' attenzione e della disponibilit�
***********************************

Grazie a te per il gentilissimo riscontro.

ri.gener...@gmail.com

unread,
Oct 21, 2014, 12:10:08 PM10/21/14
to
Ciao a tutti,

e se avessimo tre combo??? Ho visto il file allegato, ma non riesco a far si che la seconda combo abbia valori univoci!!!!!

Grazie
0 new messages