Respuestas de la comunidad
-
Israel Cassales's post in Filtros discriminatorios con VBA was marked as the answerHola,
Este código hace literalmente eso
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("B2")) Is Nothing Then
Application.EnableEvents = False
Me.Range("B3").ClearContents
With Me.Range("B3").Validation
.Delete
Select Case Me.Range("B2").Value
Case 1
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="Avion,Barco"
Case 3
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="Barco"
Case Else
End Select
End With
Application.EnableEvents = True
End If
End Sub
-
Israel Cassales's post in Ayudad con Combobox was marked as the answerHola,
Pues el código que ha compartido (en mi opinión) se ve bien en su estructura, tal vez el problema de que se borre el ítem se deba a la forma en que se está limpiando el ComboBox.
Por qué no guarda el ítem seleccionando una variable selectedItem. Así después de limpiar y volver a llenar el ComboBox, restaura el ítem seleccionado.
Algo así:
Private Sub Combobox1_DropButtonClick() Dim sd As New Collection Dim celda As Range Dim dato Dim r As Range Dim UF As Integer Dim selectedItem As String On Error Resume Next Worksheets("CONSOLIDADO").Activate Range("S2").Select ' Guarda el ítem seleccionado selectedItem = Combobox1.Value ' Limpia el ComboBox Combobox1.Clear With Worksheets("BASE") UF = .Range("S" & Rows.Count).End(xlUp).Row Set r = .Range("S2:S" & UF) For Each celda In r sd.Add celda.Value, CStr(celda.Value) Next celda For Each dato In sd Combobox1.AddItem dato Next dato End With ' Restaura el ítem seleccionado Combobox1.Value = selectedItem End Sub