Saltar al contenido

Israel Cassales

Miembro
  • Unido

  • Última visita

Respuestas de la comunidad

  1. Israel Cassales's post in Filtros discriminatorios con VBA was marked as the answer   
    Hola,
    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

  2. Israel Cassales's post in Ayudad con Combobox was marked as the answer   
    Hola,
    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