Necesito que una lista desplegable dinámica la pueda colocar en múltiples rangos y que la seleccionar el valor no lo cambie

Tengo una lista de conductores en una lista desplegable dinámica, que al seleccionarse de la lista en algún rango de cualquier hoja de un libro de Excel, cambia su posición a "ocupado" y no vuelve a aparecer disponible dentro de la lista de conductores, He intentado con combobox, pero al seleccionarlo en una celda y pasar a la otra celda me cambia el valor seleccionado por el ítem siguiente de la lista. Así que el valor que selecciono no es el que quiero seleccionar.

1 respuesta

Respuesta
2

Podrías enviarme tu archivo con ejemplos y me explicas qué es lo que necesitas, utiliza los datos que me vas a enviar para explicar lo que necesitas, utiliza colores y comentarios para la explicación.

Te anexo las macros. La siguiente va en los eventos de workbook

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
'Por.Dante Amor
    If Sh.Index < 11 Then
        If Not Intersect(Target, Range("F12:F41, O12:O41, F57:F86, O57:O86, F103:F132, O103:O132")) Is Nothing Then
            UserForm1.Show
        End If
    End If
End Sub

La siguiente va en el formulario

Dim actual
Private Sub CommandButton1_Click()
'Por.Dante Amor
    If ComboBox1 = "" Then Exit Sub
    Set h = Sheets("Drivers")
    Set b = h.Columns("A").Find(ComboBox1, LookAt:=xlWhole)
    If Not b Is Nothing Then
        ActiveSheet.Unprotect "vaf029tbg"
        ActiveCell = ComboBox1
        ActiveSheet.Protect "vaf029tbg"
        h.Cells(b.Row, "J") = "X"
        If actual <> ComboBox1 Then
            Set c = h.Columns("A").Find(actual, LookAt:=xlWhole)
            If Not c Is Nothing Then
                h.Cells(c.Row, "J") = ""
            End If
        End If
        Unload Me
    Else
        MsgBox "Driver does not exist"
        ComboBox1.SetFocus
    End If
End Sub
Private Sub CommandButton2_Click()
'Por.Dante Amor
    Set h = Sheets("Drivers")
    If ActiveCell = "" Then Exit Sub
    ActiveSheet.Unprotect "vaf029tbg"
    ActiveCell = ""
    ActiveSheet.Protect "vaf029tbg"
    Set c = h.Columns("A").Find(actual, LookAt:=xlWhole)
    If Not c Is Nothing Then
        h.Cells(c.Row, "J") = ""
    End If
    Unload Me
End Sub
Private Sub UserForm_Activate()
'Por.Dante Amor
    If ActiveCell <> "" Then
        actual = ActiveCell.Value
    End If
    Set h = Sheets("Drivers")
    For i = 4 To h.Range("A" & Rows.Count).End(xlUp).Row
        If h.Cells(i, "J") = "" Then
            ComboBox1.AddItem h.Cells(i, "A")
        End If
    Next
End Sub

Gracias por dedicarte a ayudarme. Valoro tu tiempo y dedicación.

Copie las macros como me dijiste, pero aparece que no reconoce UserForm1.Show

Este macro la copie Thisworkbbok y la otra en el formulario

Dime que estoy haciendo mal.

Gracias otra vez y feliz año

Tienes que crear un formulario que se llame userform1

Te anexo el archivo con las macros funcionando.

https://www.dropbox.com/s/3x7tbllf5dwu3lh/Template%20Transpremier%202014%20version%2010%20-1%20DAM2.xlsm?dl=0 

Si necesitas que adapte las macros a un nuevo archivo, valora esta respuesta.

Al final de mi respuesta dice: “Es una buena respuesta” y puedes seleccionar una de 3 opciones:

  • Excelente
  • Si
  • No

Crea una nueva pregunta, si lo deseas, al final del título de la nueva pregunta puedes poner que va dirigida a Dante Amor.

La pregunta no admite más respuestas

Más respuestas relacionadas