2016-11-10 1 views
0

Я использовал этот точный код VBA раньше, чем в других списках, чтобы успешно добавить не дубликаты. К сожалению, на этот раз он дает мне ошибку «определенная пользователем или объектная ошибка». Любые идеи по этому поводу очень ценятся, я не уверен, почему он не добавляет элементы в список. Это также список ActiveX, который добавляется на листе вместо пользовательской формы. Я сделал это точно такой же код, прежде чем без проблем, но на этот раз оно ошибки при: rngData.SortФункция VBA. Сортировка для окна списка

Private Sub lstCountry_Click() 
Dim wsData As Worksheet 
Dim strID As String 
Dim rngData As Range 
Dim rngCell As Range 
Dim shtPivot 
Set shtPivot = ThisWorkbook.Worksheets("Pivot") 
Set wsData = ThisWorkbook.Worksheets("Raw Data") 
Set rngData = wsData.Range("a2").CurrentRegion 


lstCountry.Clear 
strID = "Select Country" 
rngData.Sort key1:=strID, Header:=xlYes 


For Each rngCell In rngData.Columns(1).Cells 
    If rngCell.Value <> strID Then 
     lstCountry.AddItem rngCell.Value 
     strID = rngCell.Value 
    End If 
Next rngCell 

Прикрепленный скриншот таблицы, я пытаюсь разобраться enter image description here

+0

этот код будет называть себя в каждом операторе 'lstCountry.AddItem'. кроме того, я не могу понять, что 'strID = rngCell.Value' в цикл' For Each rngCell': какова ваша реальная цель? – user3598756

+0

Моя цель - добавить значения из скриншота, который я только что добавил в список без дубликатов. Я сделал это, прежде чем успешно, только на этот раз я получаю сообщение об ошибке, и я не уверен, почему! – Rosario

+0

, который является списком ActiveX, в который вы хотите обработать? как вы его заполняете в первый раз? – user3598756

ответ

0

Вот хороший пример того, как использовать опцию сортировки: https://msdn.microsoft.com/en-us/library/office/ff840646.aspx

в вашем случае, скорее всего, у вас нет «Выберите страну», написанные на верхней части диапазона. Ваш верхний диапазон - строка 2. Можете ли вы дать скриншот?

+0

Я просто приложил скриншот. Спасибо – Rosario

+0

вы можете изменить strID на следующий 'strID = wsData.Range (" a2 ")' – Vityata

+0

Ничего не добавляется, если я делаю это @vityata – Rosario

0

Я только что понял. Я переписал таблицу, в которой я извлекаю информацию из другого листа, и мой код работал. Странно, что он не будет работать в той же таблице на другом листе. Я не понимаю, но вместо этого я перейду с моей скопированной таблицей. Я ценю помощь. :-)

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