Listas drop-down de célula (em cascata)

Fechado
dcomisso Posts 1 Data de inscrição segunda 9 de maio de 2016 Status Membro Última visita 9 de maio de 2016 - 9 mai 2016 às 10:35
 usuário anônimo - 23 mai 2016 às 15:32
Bom dia,

Tenho uma planilha da mesma forma que essa (listas suspensas dependentes e em cascata), porém as minhas listas são muito grandes e gostaria de permitir que ao inserir a primeira letra de um item a lista abrisse já com os itens que iniciam com essa letra que foi digitada.
Encontrei na net uma vba que resolveria o problema porém ao colocar em prática ela não funciona em virtude de minhas listas terem formulas (indireto) no campo fonte da validação de dados.

Dessa forma alguém teria alguma solução para esse problema?

Segue a vba:


Option Explicit


Private Sub TempCombo_KeyDown(ByVal _
KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)

'Ocultar caixa de combinação e mover a próxima célula com Enter e Tab
Select Case KeyCode
Case 9
ActiveCell.Offset(0, 1).Activate
Case 13
ActiveCell.Offset(1, 0).Activate
Case Else
'Nada
End Select

End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim str As String
Dim cboTemp As OLEObject
Dim ws As Worksheet
Dim wsList As Worksheet

Set ws = ActiveSheet
Set wsList = Sheets(Me.Name)
Application.EnableEvents = False
Application.ScreenUpdating = False

If Application.CutCopyMode Then
'Permite copiar e colar na planilha
GoTo errHandler
End If

Set cboTemp = ws.OLEObjects("TempCombo")
On Error Resume Next
With cboTemp
.Top = 10
.Left = 10
.Width = 0
.ListFillRange = ""
.LinkedCell = ""
.Visible = False
.Value = ""
End With

On Error GoTo errHandler
If Target.Validation.Type = 3 Then
Application.EnableEvents = False
str = Target.Validation.Formula1
str = Right(str, Len(str) - 1)
With cboTemp
.Visible = True
.Left = Target.Left
.Top = Target.Top
.Width = Target.Width + 15
.Height = Target.Height + 5
.ListFillRange = str
.LinkedCell = Target.Address
End With
cboTemp.Activate

'Abrir a lista suspensa automaticamente
Me.TempCombo.DropDown
Me.TempCombo.MatchEntry = fmMatchEntryFirstLetter
Me.TempCombo.AutoWordSelect = False
End If

errHandler:
Application.ScreenUpdating = True
Application.EnableEvents = True
Exit Sub

End Sub

1 Respostas

usuário anônimo
23 mai 2016 às 15:32
Tente para ver.
0

Assine nossa newsletter!

Assine nossa newsletter!
Junte-se à comunidade