lista de validación haciendo caso omiso de las celdas vacías utilizando VBA en Microsoft Excel
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.
Queremos crear una lista de validación para el nombre del producto, ignorando las celdas en blanco.
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]