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
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
Grazie mille perfetto come sempre ed estremamente versatile
Grazie mille dell' attenzione e della disponibilità
Luca
Grazie mille dell' attenzione e della disponibilit�
***********************************
Grazie a te per il gentilissimo riscontro.