在本文中,我们将使用工作表的选择更改事件来创建验证列表,而忽略空白值。

原始数据由产品名称以及A列中的一些空白单元格组成。我们要为产品名称创建验证列表,而忽略空白单元格。

ArrowMain

ArrowRawData

逻辑解释

在本文中,我们使用工作表的选择更改事件在单元格I12中创建验证。首先,我们将创建一个字符串,其中包含所有产品名称,并用逗号分隔,而忽略空白单元格。然后,我们将添加此字符串以进行单元验证。

代码说明

IntLastRow = .Cells(Rows.Count,1).End(xlUp).Row上面的代码用于获取最后一个单元格的行号。

如果不是IsEmpty(.Cells(IntRow,1)),则’在第一列中串联非空白值Txt = Txt&.Cells(IntRow,1)&“,”

如果以上代码用于创建产品名称字符串,则忽略空白单元格。

With Range(“ I12”)。Validation’从单元格中删除任何先前的验证。Delete’添加验证。添加_类型:= xlValidateList,_ AlertStyle:= xlValidAlertStop,运算符:= xlBetween, Formula1:= Txt结尾为上面的代码用于将验证分配给单元格I12。

请遵循以下代码

如果您喜欢此博客,请在Facebook和Facebook上与您的朋友分享。

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

我们很希望收到您的来信,请让我们知道我们如何才能改善我们的工作并使您的工作更好。写信给我们[email protected]