Страницы: 1
RSS
Работа с элементами ListBox средствами VBA
 
Доброго времени суток.
Задача:
Есть список полей. Нужно предоставить возможность пользователю выбрать нужные из них для последующей загрузки. Для выполнения данной задачи решил использовать элемент ListBox(Не ActiveX. 2007 Office!). Он поддерживает мультивыбор и подходит в плане использования рядовым юзером.
Проблема в том, что никак из VBA не могу достучаться до этого объекта и получить такие данные: количество строк, названия выделенных строк, индексы выделенных строк.
Прошу помощи! Заранее благодарен!
P.S. В интеренете море информации, однако, все примеры у меня не запускаются. Обращение по полному пути Книга.Лист.Объект тоже выдает ошибку.
P.P.S. Файл с примером во вложениях.
 
Полный путь к объекту в данном случае: Лист.Shapes("Имя_объекта").OLEFormat.Object
 
Получить доступ к объекту вышло, но нижеприведенный код почемуто не работает:
Код
Sub ShowSelected()
    Dim i As Long
    Dim Msg As String
    Dim cnt As Integer
    
    Msg = "You selected" & vbNewLine
    
    With ActiveWorkbook.Sheets("Данные").Shapes("ListBox1").OLEFormat.Object
    For i = 0 To .ListCount - 1
          If .Selected(i) Then
              Msg = Msg & .List(i) & vbNewLine
          End If
      Next i
    End With
    
    MsgBox cnt
  
End Sub
 
Или так: ActiveSheet.ListBoxes(1)
А вот как получить инфу о выделенных строках - пока не знаю.

PS Нашел!
Код
Sub ShowSelected()
    Dim i As Long
    With ActiveSheet.ListBoxes(1)
      For i = 1 To .ListCount
        Debug.Print .Selected(i), .List(i)
      Next
    End With
End Sub

Изменено: Казанский - 15.09.2015 12:17:46
 
Цитата
Sylercool написал:
решил использовать элемент ListBox(Не ActiveX. 2007 Office!). Он поддерживает мультивыбор и подходит в плане использования рядовым юзером.
А ListBox из ActiveX разве не поддерживает? Я бы использовал именно его: проще с обработкой и возможностей больше.
 
Не работает. Пробовал и батник запускать из примеров. Не помогает. А если создать файл в 2013 офисе, то потом при открытии его в 2007 - элемент просто не активен. Вот и мучаюсь с этим ListBox. Да и нужно мне от него немного. Все 3 параметра вытащить, а уж как там дальше буду морочится, пока не думал.
 
А что не получается?
Код
With ActiveSheet.ListBoxes(1)
    cnt = .ListCount
    For i = 1 To .ListCount
        If .Selected(i) Then
            s = .List(i)
        End If
    Next
    End With
Просто напросто надо было учитывать, что в этих элементах обращение к спискам начинается не с нуля, а с 1.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Огромное спасибо!
До этого пробовал ActiveX объекты, в них как раз начало с 0 элемента! Сейчас доделаю инициализацию при открытии книги, проставлю индексы и юххха! Спасибо!
 
Посмотрите  мой пример.  
Страницы: 1
Читают тему
Наверх