Ciao Anthony,
hai proprio ragione (in effetti non sono molto pratico) però giustamente lo script che ho postato non genera nessun comando alla selezione di un elemento dell'elenco. Poi ho provato con il tuo suggerimento e in effetti si scatena qualche evento solo che ora il problema è che si pianta l'algoritmo in un punto e non riesco a capire perchè. Qui di seguito metto i due script incriminati :
- Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Select Case Target.Column
Case 2
If Target.Value = "_AUTO" Then
' trovo gli elementi che fanno parte della famiglia AUTO
Worksheets("_AUTO").Activate
Dim TipiAuto As String
Dim tipoauto As String
With Range("B:B")
Set c = .Find("Fiat Punto", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
tipoauto = c.Value
TipiAuto = tipoauto + ", " + TipiAuto
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
' crea la combobox accanto alla precedente che specifica i tipi di macchina a disposizione
Dim riga As Integer
Dim colonna As Integer
riga = Target.Row
colonna = Target.Column + 1
Call ComboLoad(colonna, riga, TipiAuto)
End If
End Select
End Sub
Questo algoritmo avrebbe lo scopo di attivare la "ComboLoad" quando nel range ("B:B") viene inserito il valore "_AUTO". La ComboLoad si porta dietro la riga e la colonna corrispondenti alla cella in cui è stato inserito il valore e dovrebbe portarsi dietro anche la stringa (TipiAuto) che viene generata nel corpo del metodo e che serve per creare un nuovo elenco accanto al precedente nel quale ho selezionato "_AUTO", infatti la stringa dell'elenco degli elementi se li prende dal worksheet _AUTO dove ricerca i tipi di Fiat Punto.
Di seguito inserisco anche lo script della ComboLoad:
- Codice: Seleziona tutto
Sub ComboLoad(colonna As Integer, riga As Integer, lista As String)
Worksheets("CONFIGURATORE").Activate
With Range(colonna & riga)
.Locked = False
.FormulaHidden = False
.Interior.ColorIndex = xlNone
.Validation.Delete
.Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=lista
.Select
End With
End Sub
Lo script sopra si pianta alla seconda riga "With Range(colonna...)" con l'errore: "Metodo 'Range' dell'oggetto '_Global' non riuscito". Ecco questo punto non capisco perchè mi tira fuori l'errore e ancor più, la cosa strana è che la variabile "lista" che viene passata è vuota.
Forse sono stato troppo lungo ma per cercare di spiegarmi meglio ho preferito mettere tutti gli script.
Grazie mille per l'aiuto di ieri e confido in uns risoluzione anche di questo.
Buon lavoro ciao ciao