2017-02-15 2 views
1

Возможно с scripting.dictionary исключить пробел из диапазона? Я использую этот код, чтобы найти специальные значения из диапазона. Мне не нужна формула excel для диапазона, но решение в VBA (если есть).VBA - scripting.dictionary exlude blank

С помощью этого кода у меня в списке всегда есть один пустой элемент.

Dim v, e 

With Sheets("DATA").Range("NAMED_RANGE") 
    v = .Value 
End With 

With CreateObject("scripting.dictionary") 
    .CompareMode = 1 
    For Each e In v 
     If Not .Exists(e) Then .Add e, Nothing 
    Next 
    If .Count Then Me.TextBox121.List = Application.Transpose(.keys) 

    ThisWorkbook.Worksheets("DICTIONARY").Range("B2").Resize(UBound(.keys), 1).Value = _ 
    Application.Transpose(.keys) 
End With 
+2

Добавить Если e.Value <> "" Тогда перед проверкой Если не .Exists (е) ... –

+1

'Если нет .Exists (е) и е <> vbNullString Тогда .Add е, Ничего ', как @ShaiRado сказал – R3uK

+0

@ R3uK Этот код от вас работает, но если диапазон имеет только одно значение, появляется ошибка («Определенная приложением или ошибка с обтеканием объекта») – Nataniell

ответ

1
Dim v, e 

With Sheets("DATA").Range("NAMED_RANGE") 
    If Application.WorksheetFunction.CountA(.Cells) > 1 Then 
     v = .Value 
    Else 
     v = .Cells(1, 1).Value 
    End If 
End With 

With CreateObject("scripting.dictionary") 
    .CompareMode = 1 
    For Each e In v 
     If Not .Exists(e) And e <> vbNullString Then .Add e, Nothing 
    Next 
    If .Count Then Me.TextBox121.List = Application.Transpose(.Keys) 

    If .Count And UBound(.Keys)>0 Then ThisWorkbook.Worksheets("DICTIONARY").Range("B2").Resize(UBound(.Keys), 1).Value = _ 
     Application.Transpose(.Keys) 
End With 
+0

Хм еще такая же ошибка. Мои данные в диапазоне выглядят следующим образом: пустых, пустых, TEST, пустых, пустых, TEST, – Nataniell

+0

@Nataniell: Какая ошибка, и на какую линию? – R3uK

+0

Эта строка 'ThisWorkbook.Worksheets (« DICTIONARY »). Диапазон (« B2 »). Resize (UBound (.Keys), 1) .Value = _ Application.Transpose (.Keys)' error ("Application-defined или объектно-деффицированная ошибка ") – Nataniell

Смежные вопросы