Comparar el dato de un combobox con un lista de excel

Tengo una tabla en excel con estos datos:

En un combobox cargo esta tabla y dependiendo el valor que seleccione modifico la hoja.

If (Cmbxdescanso.Text = "DESCANSO" Or Cmbxdescanso.Text = "PERMISO" Or Cmbxdescanso.Text = "LICENCIA" Or Cmbxdescanso.Text = "VACACIONES" Or Cmbxdescanso.Text = "SANCIÓN") Then
'Asignar descanso al trabajador buscado
    Sheets("Programación").Select
    For i = 1 To h1.Range("A" & Rows.Count).End(xlUp).Row
        If Cells(i, "C") = CmbxBnombre.Text And Cells(i, "I") = CDate(Txbxfecdes) Then
             Cells(i, "F") = Cmbxdescanso.Text
             Cells(i, "G") = Cmbxdescanso.Text
             Cells(i, "H") = Cmbxdescanso.Text
             Cells(i, "N") = Txbxobserv
        End If
    Next

Pero si ingreso un nuevo valor a la tabla, la condición ya no se cumple porque el nuevo elemento no se encuentra dentro de la validación (INCAP. GRAL)

Necesito una condición que me evalúe todos los elementos de la tabla.

1 Respuesta

Respuesta
2

Te presento una opción. Para configurar cada descanso

En la hoja donde tienes los descanso, voy a suponer que la hoja se llama "Hoja6"; en la columna O agrega la palabra "SI" para cada descanso que quieras validar, agrega la palabra NO para los que no quieras validar. De esa forma cada que agregues un nuevo descanso, le configuras la "validación", escribiendo "SI" o "NO"


Ahora el código quedaría así, en el objeto h establezco la "Hoja6", cambia este nombre por el nombre de tu hoja.

Después busco el dato que tienes en el cmbxdescanso, si lo encuentro, tomo el dato "SI" o "NO".

Ahora valido si es igual a "SI", entonces realiza los cambios en la hoja

    Set h = Sheets("Hoja6")
    Set b = h.Columns("N").Find(Cmbxdescanso, lookat:=xlWhole)
    If Not b Is Nothing Then
        valida = h.Cells(b.Row, "O")
        If valida = "SI" Then
            'Asignar descanso al trabajador buscado
            Sheets("Programación").Select
            For i = 1 To h1.Range("A" & Rows.Count).End(xlUp).Row
                If Cells(i, "C") = CmbxBnombre.Text And Cells(i, "I") = CDate(Txbxfecdes) Then
                     Cells(i, "F") = Cmbxdescanso.Text
                     Cells(i, "G") = Cmbxdescanso.Text
                     Cells(i, "H") = Cmbxdescanso.Text
                     Cells(i, "N") = Txbxobserv
                End If
            Next
        End If
    End If

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas