ComboBox DropDown

25/05/2005 - 22:20 por Fabian | Informe spam
Tengo un problemita, para que un combobox se despliegue se usa dropdown o
con el raton se le hace clic en el triangulito que esta a la derecha de la
ventana, ahora bien, cuando hago clic otra vez en el mismo lugar la ventana
vuelve a contraerse. ¿Como puedo hacer el mismo efecto del raton sin usar la
tecla escape? algo asi como un dropup.
 

Leer las respuestas

#1 Héctor Miguel
27/05/2005 - 12:08 | Informe spam
hola, Fabian !

... no lo puedo hacer funcionar... habia hecho unas modificaciones a... las listas desplegables, segun se agregan letras.
... la computadora donde estan haciendo las listas ya no soporta la cantidad de nombres... y funciona como un carro viejo
... suprimi la parte del list box, hasta ahi venia bien.
... que solo muestre los nombres parecidos en el combobox, y no todos como lo hace actualmente.
Lo mismo que hace en el list box lo haga en el combo box... queria... plegar y desplegar el combobox [...]



prueba con los siguientes codigos [estoy asumiendo que el listbox 'ha desaparecido'] :))
[creo que] 'tendras que'... sustituir completamente los codigos anteriores :-(
si cualquier duda [o surgen detalles adicionales]... comentas?
saludos,
hector.
en el modulo de codigo de la hoja con el combobox ==Dim Sig As Integer, Pulsados As Integer, Patron As String, _
Celda As Range, Listando As Boolean, Filtrando As Boolean
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ComboBox1.Visible = False
Pulsados = 0
With ActiveCell
If .Column = 1 And .Row > 1 And .Row <= [a65536].End(xlUp).Row + 1 Then
ComboBox1.Left = .Left
ComboBox1.Top = .Top - 1
ComboBox1.Width = .Width + 20
ActualizaNombres
End If
End With
End Sub
Private Sub ComboBox1_KeyDown( _
ByVal KeyCode As MSForms.ReturnInteger, _
ByVal Shift As Integer)
Filtrando = True
Select Case KeyCode
Case vbKeyReturn, vbKeyEscape: Filtrando = False: SendKeys "{Esc}"
Case vbKeyBack
If Pulsados > 0 Then Pulsados = Pulsados - 1
Case 32, 48 To 57, 65 To 90, 97 To 122: Pulsados = Pulsados + 1
End Select
End Sub
Private Sub ComboBox1_LostFocus()
If Filtrando Then Exit Sub
If ActiveCell <> "" And ActiveCell <> ComboBox1 Then Exit Sub
If Trim(ComboBox1) <> "" Then ActiveCell = ComboBox1
End Sub
Private Sub ComboBox1_Change()
If Listando Then Exit Sub
If Pulsados = 0 Or ComboBox1 = "" Then ActualizaNombres: Exit Sub
If Filtrando Then ActualizaLista
End Sub
Private Sub ActualizaNombres()
Listando = True
Dim Nombres As New Collection
On Error Resume Next
For Each Celda In Range([a2], [a65536].End(xlUp))
If Trim(Celda) <> "" Then Nombres.Add Celda, CStr(Celda)
Next
With ComboBox1
.Visible = False
.Clear
For Sig = 1 To Nombres.Count: .AddItem Nombres.Item(Sig): Next
.Visible = True
.Activate
.Text = ActiveCell
.DropDown
End With
Listando = False
End Sub
Private Sub ActualizaLista()
Application.ScreenUpdating = False
Dim Parecidos As New Collection
Patron = LCase(Left(ComboBox1, Pulsados))
On Error Resume Next
For Each Celda In Range([a2], [a65536].End(xlUp))
If LCase(Left(Celda, Pulsados)) = Patron Then Parecidos.Add Celda, CStr(Celda)
Next
With ComboBox1
.Visible = False
.Clear
For Sig = 1 To Parecidos.Count: .AddItem Parecidos.Item(Sig): Next
.Visible = True
.Activate
.Text = Patron
.DropDown
End With
Filtrando = False
End Sub

Preguntas similares