2015-03-30 4 views
1

У меня есть рабочая книга Excel, которая работала, но сегодня утром зарегистрирована ошибка.Невозможно установить ListFillRangeProperty класса DropDown

Сообщение об ошибке я получаю,

Ошибка выполнения 1004
Невозможно установить ListFillRangeProperty из DropDown класса

Ниже мой код - ошибка происходит в ws.DropDowns("DropDownStart").

DropDownStart и DropDownEnd являются правильными именами для раскрывающихся списков на моем листе, поэтому не уверены, что вызывает эту ошибку. Когда я отлаживать печатать имя я

mysheetName!$A$2:$A$338

, который является правильным, и все ячейки содержат даты в них. Так что бит застрял!

Dim ws As Worksheet 
Dim wsTime As Worksheet 
Set wsTime = ThisWorkbook.Sheets(WSTSJPM) 
Set ws = ThisWorkbook.Sheets(WSCHARTS) 

' get last date 
Dim lRow As Long 
lRow = wsTime.Range("A65536").End(xlUp).Row 
ws.Select 
ws.DropDowns("DropDownStart").ListFillRange = wsTime.Name & "!" & wsTime.Range("A2:A" & lRow).Address 
ws.DropDowns("DropDownEnd").ListFillRange = wsTime.Name & "!" & wsTime.Range("A2:A" & lRow).Address 

Обновление для комментариев

я могу изменить выпадающий список вручную код может изменить его обычно тоже. Книга не используется.

Название листа не содержит пробелов.

Я считаю, что я должен использовать «=» в диапазоне заполнения, если вы не знаете другого пути?

В раскрывающемся является управлением формой списка типа коробки и находится на мой рабочем листе

+0

Возможно ли изменить свойства выпадающего меню вручную? При некоторых условиях - например, когда книга находится в режиме общего доступа - вы не можете ее изменить. – BrakNicku

+1

Имеет ли название листа пробелы? – Rory

+0

Если вы используете «=» в диапазоне заполнения: '= mysheetName! $ A $ 2: $ A $ 338' –

ответ

0

Другой проблема выглядит как у вас нет кавычки имен листов. Этот код работает для меня

Sub populatecombobox() 
    Dim ws As Worksheet 
    Dim wsTime As Worksheet 
    Dim lRow As Long 

    Set wsTime = Sheets("WSTSJPM") 
    Set ws = Sheets("WSCHARTS") 

    With wsTime 
     lRow = .Cells(Rows.Count, "A").End(xlUp).Row 
    End With 

    ws.DropDowns("DropDownStart").ListFillRange = "WSTSJPM!$A$2:$A$" & lRow 
    ws.DropDowns("DropDownEnd").ListFillRange = "WSTSJPM!$A$2:$A$" & lRow 

End Sub 
+0

Здравствуйте, извините, я должен был упомянуть, что имена листов на самом деле являются глобальными переменными, поэтому это не проблема и правильно написана, так что это не проблема. – mHelpMe

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