elenco di convalida ignorando le celle vuote che utilizzano VBA in Microsoft Excel
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.
Vogliamo creare un elenco di convalida per il nome del prodotto, ignorando le celle vuote.
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]