In questo articolo, utilizzeremo l’evento di modifica della selezione del foglio di lavoro per creare un elenco di convalida, ignorando i valori vuoti.

I dati grezzi sono costituiti dal nome del prodotto, insieme ad alcune celle vuote nella colonna A.

ArrowMain

Vogliamo creare un elenco di convalida per il nome del prodotto, ignorando le celle vuote.

ArrowRawData

Spiegazione logica

In questo articolo, abbiamo utilizzato l’evento di modifica della selezione del foglio di lavoro per creare la convalida nella cella I12. In primo luogo, creeremo una stringa che comprenderà tutti i nomi dei prodotti, separati da virgole, ignorando le celle vuote. Quindi aggiungeremo questa stringa per la convalida della cella.

Spiegazione del codice

IntLastRow = .Cells (Rows.Count, 1) .End (xlUp) .Row Il codice precedente viene utilizzato per ottenere il numero di riga dell’ultima cella.

If Not IsEmpty (.Cells (IntRow, 1)) Then ‘Concatenando valori non vuoti nella prima colonna Txt = Txt & .Cells (IntRow, 1) & “,”

End If Il codice precedente viene utilizzato per creare una stringa di nomi di prodotto, ignorando le celle vuote.

Con intervallo (“I12”). Convalida “Eliminazione di qualsiasi convalida precedente dalla cella .Delete” Aggiunta della convalida .Add _ Tipo: = xlValidateList, _ AlertStyle: = xlValidAlertStop, _ Operatore: = xlBetween, _ Formula1: = Txt End With Il codice sopra viene utilizzato per assegnare la convalida alla cella I12.

Segui sotto per il codice

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

Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook e Facebook.

Ci piacerebbe sentire la tua opinione, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici a [email protected]