2016-05-11 3 views
0

Я добавляю окно списка проверки данных в существующую электронную таблицу Excel. Данные поступают из отдельного листа под названием Data. Диапазон данных - A4 - A100; пока данные находятся только в ячейках A4 - A10.Excel Macro добавить окно проверки данных на лист - Пустоты

При активации окна «Список проверки данных» он считывает все пробельные ячейки. Есть ли способ остановить это?

Мой код до сих пор:

''Code below is what I am using to create the list box 
    With Range("A21:A42").Validation 

     .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
     xlBetween, Formula1:="=Data!$A$4:$A$100" 
    End With 

Я знаю, что при создании Проверка данных непосредственно в Excel это галочкой поле игнорировать пустые ячейки.

ответ

0

Вы можете добавить пустую часть ignore в код: например.

With Range("A21:A42").Validation 
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
    xlBetween, Formula1:="=Data!$A$4:$A$100", .IgnoreBlank = True 
End With 

Вы также можете получить эту коду, путем записи макроса

0

Привет Вы можете создать динамический именованный диапазон

Goto Имя менеджер ANC создать новый пример имени filteredList

затем использовать формулу для перечня

=Data!$A$4:INDEX(Data!$A$4:$A$100,SUMPRODUCT(--(Data!$A$4:$A$100<>""))) 

enter image description here

, а затем обновить ваш макрос или диапазон от =Data!$A$4:$A$100 до =filteredList

Если вы хотите добавить в список с помощью VBA использовать ниже код выше код

ActiveWorkbook.Names.Add Name:="filteredList", RefersToR1C1:= _ 
    "=Data!R4C1:INDEX(Data!R4C1:R100C1,SUMPRODUCT(--(Data!R4C1:R100C1<>"""")))" 
ActiveWorkbook.Names("filteredList").Comment = "" 

===

With Range("A21:A42").Validation 
    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _ 
    xlBetween, Formula1:="=filteredList" 
End With