Страницы: 1
RSS
Вопрос ошибки VBA ComboBOX
 
Добрый день коллеги!
Ситуация делаю UserForm где есть выпадающий список с названиями
использую combobox
в него мне нужно добавить список из листа

Написал вот такой код.....
Выдает ошибку Compile error: Expected array
и выделяет Redim preserve rngY(1
если rngY меняю на Вариант
то выделяет ее же и пишет Type mismatch
В общем не могу понять что не так делаю
Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub DolgnosList_DropButtonClick()
Dim colDolgnost As New Collection
Dim i%, k%
Dim rngY As String
Dim intROW As Integer
 
intROW = Worksheets("Должность".Cells(Rows.Count, 1).End(xlUp).Row
Do
i = i + 1
ReDim Preserve rngY(1 To intROW - 1)
rngY(i) = Worksheets("Должность".Cells(i + 1, 1)
Loop Until rngY(i) = intROW - 1
 
For k = 1 To i - 1
DolgnosList.AddItem rngY(k)
Next k
End Sub
 
А зачем вообще ReDim Preserve? Забирайте в массив и сразу этот массив в ComboBox. Ну или циклом AddItem.
 
Цитата
Niarah пишет: что не так делаю
Многое!  :)  
Цитата
Юрий М пишет: А зачем вообще ReDim Preserve?
Да еще в цикле. Размерность же не меняется.
Вместо всего того великолепия, одна строчка кода:
Код
1
2
3
Private Sub DolgnosList_DropButtonClick()
    DolgnosList.List = Range("a1:a" & Cells(Rows.Count, 1).End(xlUp).Row).Value
End Sub
И используйте теги для оформления кода.
Изменено: KuklP - 19.10.2015 16:13:26
Я сам - дурнее всякого примера! ...
 
Цитата
Юрий М пишет:
А зачем вообще ReDim Preserve? Забирайте в массив и сразу этот массив в ComboBox. Ну или циклом AddItem.

М-м-м в первом варианте я задаю rngY как массив ? array ? или new collection
я еще слаб в массивах )

а циклом вот так ?
Код
1
2
3
for i = 1 to introw ' introw = число строк в списке
   dolgnosList.additem worksheets("Должность".cells(i,1)
next i
А потом то что они выберут мне нужно внести в лист
.cells(1,1)=dolgnosList.selected
вот так ?
 
См. ответ Сергея (#3)
 
Спасибо большое! )
 
Спасибо мало.....
Человек вопрос задал а вы ему так и не ответили а предложили свое решение
Ваш форум читает не только создатель темы но еще многие пользователи интернета по запросу в поисковике
а данное решение мне вот например не подходит
Мне нужно знать где я ошибся чтоб больше не повторять эти ошибки
Так что буду искать дальше в чем я ошибся
 
Почему предложенное решение не подходит? И какая проблема у Вас - как проявляется ошибка?
 
1.Я свою проблему решил
при создании массива ReDim newarr(...бла бла бла) VBA ругался  .Compile error: Expected array
я ошибочно присвоил переменную as Range для массива newarr
замена переменнной на variant помогла... ну либо просто без объявления
2. мне в коде не нужен UserForm и выпадающий список, а нужен был именно массив для работы с данными, я просто скопировал его
из своего другого кода но там он работал а в новом нет. долго ломал голову. в старом коде Dim далеко в верху

я сам не программист и VBA недели 2 изучаю, так что много детских ошибок ни одного действия без интернета не получилось бы
щас появилось время и я пытаюсь облегчить себе жизнь при помощи VBA
очень часто ошибаюсь с синтаксисом

По поводу темы форума, меняем на variant  массив и дальше начинает ругаться VBA "...пишет Type mismatch..."
дальше надо смотреть где собака порылась [IMG]
......посмотрел....поправте если я не прав чтоб применить ReDim Preserve rngY() нужно сначала создать ReDim rngY()
Niarah у Вас что-то в цикле напутано, у Вас условие выхода из цикла сравнение значения массива и номера предпоследней строки
такое совпадение редко может у Вас в ячейках буквы вообще
может rngY(i) = intROW - 1 заменить на  i = intROW - 1 или rngY(i) = rngY(intROW - 1)
мне не понятна задача что вы хотите сделать с данными
может нужно просто попробовать другой ЦИКЛ
 
Sanya_Bars, Спасибо тебе добрый человек. Я долго мучилась с этим "Type mismatch...".
мой исходник выглядел так:
Скрытый текст

После я решила применить ваше указание по поводу "сначала создать ReDim ", но подумав, получается без Preserve мой массив не сохраняет предыдущие вычисления с снова переопределяет массив. Немного подумав я решила обмануть программу и написала так. и все заработало:
Скрытый текст

Удачи всем. Возможно мой опыт тоже кому-то поможет, как мне помог опыт Sanya_Bars.
Изменено: Софья Золкина - 19.10.2015 16:13:02
Страницы: 1
Читают тему
Loading...