En este artículo, usaremos el evento de cambio de selección de la hoja de trabajo para crear una lista de validación, ignorando los valores en blanco.

Los datos brutos consisten en el nombre del producto, junto con algunas celdas en blanco en la columna A.

ArrowMain

Queremos crear una lista de validación para el nombre del producto, ignorando las celdas en blanco.

ArrowRawData

Explicación lógica

En este artículo, hemos utilizado el evento de cambio de selección de la hoja de trabajo para crear la validación en la celda I12. En primer lugar, crearemos una cadena que incluirá todos los nombres de productos, separados por comas, ignorando las celdas en blanco. Luego agregaremos esta cadena para la validación de la celda.

Explicación del código

IntLastRow = .Cells (Rows.Count, 1) .End (xlUp) .Row El código anterior se usa para obtener el número de fila de la última celda.

If Not IsEmpty (.Cells (IntRow, 1)) Then ‘Concatenación de valores no en blanco en la primera columna Txt = Txt & .Cells (IntRow, 1) & «,»

End If El código anterior se usa para crear una cadena de nombres de productos, ignorando las celdas en blanco.

Con Rango («I12»). Validación ‘Eliminando cualquier validación previa de la celda. Eliminar’ Agregando la validación .Agregar _ Tipo: = xlValidateList, _ AlertStyle: = xlValidAlertStop, _ Operador: = xlBetween, _ Formula1: = Txt End With El código anterior se usa para asignar validación a la celda I12.

Siga el código a continuación

Option Explicit

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'Declaring variables

Dim IntRow As Integer, IntLastRow As Integer

Dim Txt As String

With Worksheets("Main")



'Finding the row number of last cell

IntLastRow = .Cells(Rows.Count, 1).End(xlUp).Row



'Looping from 10th row to Last row

For IntRow = 10 To IntLastRow



'Creating text for validation list

If Not IsEmpty(.Cells(IntRow, 1)) Then



'Concatening non blank values in the first column

Txt = Txt & .Cells(IntRow, 1) & ","

End If

Next IntRow

End With

Txt = Left(Txt, Len(Txt) - 1)

'Adding validation to cell I12

With Range("I12").Validation

'Deleting any previous validation from the cell

.Delete

'Adding the validation

.Add _

Type:=xlValidateList, _

AlertStyle:=xlValidAlertStop, _

Operator:=xlBetween, _

Formula1:=Txt

End With

End Sub

Si te gustó este blog, compártelo con tus amigos en Facebook y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]