Excel数据验证下拉列表中的空白值

时间:2012-06-28 10:12:24

标签: excel vba excel-2007

我不知道Cell A1到A65555会有多少个值。 我有B1,它基于A列进行数据验证,如下所示     A1:A65555

值列在A列中,最多10行。 (从A1到A10)

但是当我点击B1时,它会显示空值以及A1到A10。 我希望A列的所有非空值都列在B1中。

注意:我在数据验证设置中勾选了“忽略空白单元格”选项。 或者任何人让我知道如何通过VBA设置数据验证?

2 个答案:

答案 0 :(得分:3)

假设您在A列中没有间隙,则列底部只有一些空白行(如数据中的总是A1:AN,其中1

公式=>定义名称

输入一些名称(如ValidationList)

将此用作公式=OFFSET(INDIRECT("Sheet1!$A$1"),0,0,COUNTA(Sheet1!$A:$A),1)

然后将数据验证列表定义为您输入的名称(并再次检查忽略空白,以便在您未选择任何内容时不会出错)

答案 1 :(得分:0)

我编写了一些代码,该代码以编程方式通过vba插入了数据验证,并且忽略了空格,因此列表将更易于滚动。

来自Source Sheets(“ Phones_Emails”)列A的Sheets(“ Whatsup_msg”)列J中的验证。

Sub ValidateNonBlanks()
Dim lastRowCombo As Long
Dim lastRowSource As Long
Dim rangeSource As Range
Dim rangeCombo  As Range

lastRowCombo = 150
lastRowSource = Sheets("Phones_Emails").Cells(Rows.Count, "A").End(xlUp).row

Set rangeCombo = Sheets("Whatsup_msg").Range("J4:J" & lastRowCombo)
Set rangeSource = Sheets("Phones_Emails").Range("A4:A" & lastRowSource)

With rangeCombo.Validation
    .Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="=Phones_Emails!$A$2:$A$" & lastRowSource
    .IgnoreBlank = True
    .InCellDropdown = True
    .InputTitle = ""
    .ErrorTitle = ""
    .InputMessage = ""
    .ErrorMessage = ""
    .ShowInput = True
    .ShowError = True
End With

End Sub