Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.09.2016, 19:04   #1
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию как быть если полученный массив excel vba всего одно значение

Здравствуйте, Уважаемые.
Получаю массив данных для комбобокс так
Код:
With Sheets("Список")
        arrЗаказОпл = .Range(.Cells(1, 2), .Cells(Rows.Count, 2).End(xlUp)).Value
    End With
ComboBox_НЗ.List = arrЗаказОпл
все работает без нареканий, но вот столкнулся со случаем, когда в массив попадает всего одно значение и тогда эта конструкция не рабюотает.
как можно и нужно здесь сделать, чтобы получить это одно значение для комбобокса?
Спасибо.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 28.09.2016, 19:34   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

через AddItem вложить в ComboBox 1 значение
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 28.09.2016, 19:54   #3
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Код:
ComboBox_НЗ.List = IIf(IsArray(arrЗаказОпл), arrЗаказОпл, Array(arrЗаказОпл))
pashulka вне форума Ответить с цитированием
Старый 28.09.2016, 19:55   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

А если обработать ошибку, может быть?
Код:
Sub fa()
    Dim arrЗаказОпл
    On Error GoTo Errors1
    With Sheets("Список")
        arrЗаказОпл = .Range(.Cells(1, 2), .Cells(Rows.Count, 2).End(xlUp)).Value
    End With

    ComboBox1.List = arrЗаказОпл
    Exit Sub
Errors1:
    ComboBox1.Clear
    ComboBox1.AddItem arrЗаказОпл
End Sub
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 28.09.2016, 20:21   #5
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

pashulka, спасибо! все супер. Впрочем, как всегда.
Aleksandr H. спасибо за обработчик ошибки. Пригодится
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 29.09.2016, 09:04   #6
armati lepori
Пользователь
 
Аватар для armati lepori
 
Регистрация: 23.09.2016
Сообщений: 34
По умолчанию

Проблема "один элемент" возникает в самых разных местах. Приходится обрабатывать отдельно. Иногда блокирование ошибки. Мелочь, но напрягает!
Я не волшебник - я только учусь.
armati lepori вне форума Ответить с цитированием
Старый 30.09.2016, 02:33   #7
olegosenniy
Новичок
Джуниор
 
Аватар для olegosenniy
 
Регистрация: 30.09.2016
Сообщений: 3
По умолчанию

но ведь этого можно избежать
olegosenniy вне форума Ответить с цитированием
Старый 01.10.2016, 01:04   #8
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Альтернативный вариант :

Код:
With Worksheets("Список")
     ComboBox_НЗ.List = .Range(.Cells(1, 2), .Cells(.Rows.Count, 3).End(xlUp)).Value
End With
А второй столбец - просто скрыть.
Cделать это можно, если изменить значение свойства ColumnCount = 1, либо установить ширину второго столбца = 0, например, ColumnWidths = 100;0
pashulka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбрать 3 ячейки vba excel 2003 за одно действие ольгаг Microsoft Office Excel 2 02.06.2016 12:28
Переменной t присвоить значение истина, если в одномерном массиве имеется хотя бы одно отрицательное и четное число (Паскаль) zzz99 Помощь студентам 3 13.03.2014 13:28
Как программно получить значение координаты прокрутки Scrollbar в ListView для VBA Excel Mishel825 Microsoft Office Excel 0 28.07.2012 19:09
Стоит ли объединять 2 таблицы в запросе если необходимо только одно значение из первой? AlexanderGalkin PHP 3 17.04.2011 18:05
Открытый доступ к компьютеру для всего инета. Опасно! Как быть? Web-Gangsta Безопасность, Шифрование 6 02.11.2009 21:44