验证列表忽略在Excel中使用VBA空单元格
在本文中,我们将使用工作表的选择更改事件来创建验证列表,而忽略空白值。
原始数据由产品名称以及A列中的一些空白单元格组成。我们要为产品名称创建验证列表,而忽略空白单元格。
逻辑解释
在本文中,我们使用工作表的选择更改事件在单元格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]