Moderatori: Anthony47, Flash30005
Voglio fare in modo che digitando nella cella B2 del foglio selezione ( e successive righe colonna B ) il menu a tendina "filtri" con gli elementi che contengono solo quelle parole e mostri solo quelle
Option Explicit
Option Compare Text
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, rCell As Range
Dim ur As Long, i As Long, j As Long, a As Long
Dim lng As Integer, lunga As Integer
Dim ele As String, digit As String, txt As String, frm As String
If Not Intersect(Target, Range("H2")) Is Nothing Then
ur = Sheets("lista").Cells(Rows.Count, 2).End(xlUp).Row
ele = "B2:B" & ur
Sheets("lista").Range("E:E").ClearContents
Set Rng = Sheets("lista").Range(ele)
digit = Sheets("seleziona").Cells(2, 8).Value
lng = Len(digit)
a = 1
For Each rCell In Rng.Cells
lunga = Len(rCell)
For j = 1 To lunga 'se valore cella è simile a quanto digitato
txt = Mid(rCell, j, lng)
If txt Like digit Then
a = a + 1 'scrive il dato in col E di lista
Sheets("lista").Cells(a, 5) = rCell.Value
Exit For
End If
Next j
Next
'assegna l'elenco alla convalida
ur = Sheets("lista").Cells(Rows.Count, 5).End(xlUp).Row
frm = "=lista!$E$2:$E$" & ur
If ur >= 2 Then
With Sheets("seleziona").Cells(2, 8).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=frm
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = False
End With
End If
End If
End Sub
Marius44 ha scritto:Ciao
Vediamo se ho capito bene.
IMPORTANTE:
a) ho utilizzato il file di cui al post #1
b) in detto file la colonna E del Foglio("lista") deve essere vuota
c) ho inserito una convalida dati nella cella H2 del Foglio("seleziona")
d) nel Modulo del Foglio("seleziona") ho inserito questo codice
- Codice: Seleziona tutto
Option Explicit
Option Compare Text
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, rCell As Range
Dim ur As Long, i As Long, j As Long, a As Long
Dim lng As Integer, lunga As Integer
Dim ele As String, digit As String, txt As String, frm As String
If Not Intersect(Target, Range("H2")) Is Nothing Then
ur = Sheets("lista").Cells(Rows.Count, 2).End(xlUp).Row
ele = "B2:B" & ur
Sheets("lista").Range("E:E").ClearContents
Set Rng = Sheets("lista").Range(ele)
digit = Sheets("seleziona").Cells(2, 8).Value
lng = Len(digit)
a = 1
For Each rCell In Rng.Cells
lunga = Len(rCell)
For j = 1 To lunga 'se valore cella è simile a quanto digitato
txt = Mid(rCell, j, lng)
If txt Like digit Then
a = a + 1 'scrive il dato in col E di lista
Sheets("lista").Cells(a, 5) = rCell.Value
Exit For
End If
Next j
Next
'assegna l'elenco alla convalida
ur = Sheets("lista").Cells(Rows.Count, 5).End(xlUp).Row
frm = "=lista!$E$2:$E$" & ur
If ur >= 2 Then
With Sheets("seleziona").Cells(2, 8).Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=frm
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = False
End With
End If
End If
End Sub
Una volta inserito uno o più caratteri nella cella H2 e si dà Invio, se si clicca sulla freccia della convalida si apre un elenco con i nomi che contengono quanto digitato.
Il file lo trovi qui https://www.dropbox.com/s/v0llu4t1h7r9yv5/test_VBA.xlsm?dl=0
Fai sapere. Ciao,
Mario
Ci speravola tua soluzione è molto piu bella della mia
Prima che te ne accorga troppo tardi, quando clicchi fallo velocemente, perche' se tieni premuto a lungo come fanno i boomers allora rischi di riempire tante righe con lo stesso valore...va alla grande
Torna a Applicazioni Office Windows
File batch per copiare file selezionato da menu contestuale Autore: valle1975 |
Forum: Programmazione Risposte: 3 |
Scelta da elenco a discesa che ne apre un altro Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 12 |
Aggiungere menù a tendina da lista variabile Autore: systemcrack |
Forum: Applicazioni Office Windows Risposte: 17 |
Menu a tendina che non mi seleziona una provincia Autore: danibi60 |
Forum: Applicazioni Office Windows Risposte: 6 |
Visitano il forum: Nessuno e 64 ospiti