Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Заполнение ListView - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заполнение ListView (Макросы/Sub)
Заполнение ListView
Dмитрий Дата: Суббота, 24.05.2014, 20:51 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 91
Репутация: 9 ±
Замечаний: 40% ±

Excel 2010
Всем Доброго времени суток! Мне для работы приходится как-то упорядочивать и выводить массу данных. Использую многостолбцовый ListBox. Данные выводятся по различным условиям (месяц, год и .....). Но в ListBox есть несколько недостатков, которые несколько ухудшают восприятие.
1. Нет возможности увидеть всю строчку в столбце (можно, конечно использовать доп. элементы, но это не вариант)
2. Нет возможности задать разный цвет отдельным строкам (это большой плюс, визуально сразу видно, что, например какие-то данные не в порядке).
Знаю, что в ListBox реализовать это не представляется возможным, в отличие от ListView. Вот и хотелось бы спросить, у знающих людей, кто использовал этот элемент. Как заполнить ListView с несколькими столбцами, установить начальный их размер.
Например, сейчас я заполняю ListBox так:[vba]
Код

ListBox1.Clear
lr = Cells(Rows.Count, 1).End(xlUp).Row
j = 0
For i = 1 To lr Step 1
If Cells(i, 2) Like "*" & TextBox1 & "*" Then
ListBox1.AddItem Cells(i, 1)
ListBox1.List(j, 1) = Cells(i, 2)
j = j + 1
End If
Next i
[/vba]
Искал какую-нибудь литературу - ничего дельного. Может кто-нибудь что-нибудь подскажет и посоветует
Образно набросал небольшой файлик с ListBox
К сообщению приложен файл: ListBox.xlsb (15.1 Kb)


Сообщение отредактировал Dмитрий - Суббота, 24.05.2014, 20:53
 
Ответить
СообщениеВсем Доброго времени суток! Мне для работы приходится как-то упорядочивать и выводить массу данных. Использую многостолбцовый ListBox. Данные выводятся по различным условиям (месяц, год и .....). Но в ListBox есть несколько недостатков, которые несколько ухудшают восприятие.
1. Нет возможности увидеть всю строчку в столбце (можно, конечно использовать доп. элементы, но это не вариант)
2. Нет возможности задать разный цвет отдельным строкам (это большой плюс, визуально сразу видно, что, например какие-то данные не в порядке).
Знаю, что в ListBox реализовать это не представляется возможным, в отличие от ListView. Вот и хотелось бы спросить, у знающих людей, кто использовал этот элемент. Как заполнить ListView с несколькими столбцами, установить начальный их размер.
Например, сейчас я заполняю ListBox так:[vba]
Код

ListBox1.Clear
lr = Cells(Rows.Count, 1).End(xlUp).Row
j = 0
For i = 1 To lr Step 1
If Cells(i, 2) Like "*" & TextBox1 & "*" Then
ListBox1.AddItem Cells(i, 1)
ListBox1.List(j, 1) = Cells(i, 2)
j = j + 1
End If
Next i
[/vba]
Искал какую-нибудь литературу - ничего дельного. Может кто-нибудь что-нибудь подскажет и посоветует
Образно набросал небольшой файлик с ListBox

Автор - Dмитрий
Дата добавления - 24.05.2014 в 20:51
wild_pig Дата: Суббота, 24.05.2014, 22:30 | Сообщение № 2
Группа: Проверенные
Ранг: Обитатель
Сообщений: 517
Репутация: 97 ±
Замечаний: 0% ±

2003, 2013
ListView, правда на французском )
 
Ответить
СообщениеListView, правда на французском )

Автор - wild_pig
Дата добавления - 24.05.2014 в 22:30
nilem Дата: Суббота, 24.05.2014, 22:52 | Сообщение № 3
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
вот такой примерчик сохранился (листвью с фильтром) - может, подойдет?
К сообщению приложен файл: ListView_Filter.xlsm (34.0 Kb)


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениевот такой примерчик сохранился (листвью с фильтром) - может, подойдет?

Автор - nilem
Дата добавления - 24.05.2014 в 22:52
Dмитрий Дата: Воскресенье, 25.05.2014, 14:18 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 91
Репутация: 9 ±
Замечаний: 40% ±

Excel 2010
nilem, спасибо. Пытаюсь разобраться. С колонками, размерами - понятно, но как заполнить конкретные столбцы[vba]
Код
With ListView1.ColumnHeaders
         .Clear
         .Add , , "N", 30
         .Add , , "Наименование объекта", 200
         .Add , , "Адрес объекта", 200
     End With
ListView1.ListItems.Add = Cells(i, 1) ' так заполняет через строчку
ListView1.ListItems(1).ListSubItems.Add , , Cells(i, 2)' так распределяет столбец по строкам
[/vba] Пробовал еще кучу вариантов, но везде выдает ошибку.
В примере ListBox, как должно быть
К сообщению приложен файл: ListView.xlsb (19.4 Kb)
 
Ответить
Сообщениеnilem, спасибо. Пытаюсь разобраться. С колонками, размерами - понятно, но как заполнить конкретные столбцы[vba]
Код
With ListView1.ColumnHeaders
         .Clear
         .Add , , "N", 30
         .Add , , "Наименование объекта", 200
         .Add , , "Адрес объекта", 200
     End With
ListView1.ListItems.Add = Cells(i, 1) ' так заполняет через строчку
ListView1.ListItems(1).ListSubItems.Add , , Cells(i, 2)' так распределяет столбец по строкам
[/vba] Пробовал еще кучу вариантов, но везде выдает ошибку.
В примере ListBox, как должно быть

Автор - Dмитрий
Дата добавления - 25.05.2014 в 14:18
nilem Дата: Воскресенье, 25.05.2014, 15:40 | Сообщение № 5
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
наверное, как-то так:
[vba]
Код
Private Sub CommandButton1_Click()
Dim i&
With Me.ListView1
     For i = 10 To 1 Step -1
         With .ListItems.Add
             .Text = Cells(i, 1)
             .ListSubItems.Add , , Cells(i, 2)
             .ListSubItems.Add , , Cells(i, 3)
         End With
     Next i
End With
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениенаверное, как-то так:
[vba]
Код
Private Sub CommandButton1_Click()
Dim i&
With Me.ListView1
     For i = 10 To 1 Step -1
         With .ListItems.Add
             .Text = Cells(i, 1)
             .ListSubItems.Add , , Cells(i, 2)
             .ListSubItems.Add , , Cells(i, 3)
         End With
     Next i
End With
End Sub
[/vba]

Автор - nilem
Дата добавления - 25.05.2014 в 15:40
Alex_ST Дата: Понедельник, 26.05.2014, 08:43 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
Я в 2012 году (сейчас уже ничего почти не помню :( ) разбирался с ListView. Думал применить его на работе, но что-то отвлекло, а потом и надобность отпала...
Помню только, что на старой Планете тему курили и, кажется, была проблема с неуверенной работой на разных машинах из-за разницы версий в библиотеках. (Хотошо, что попробовал перейти по ссылке. Не знаю, почему, но ссылка на Планету получилась битая :( попробую напрямую адрес дать: http://www.planetaexcel.ru/forum....D=39876 )
Однако то, что нарыл/наплодил у себя в копилке сохранил. Сейчас выложил на Гугл.Диск и расшарил.
Поройтесь. Там много всего. Но только я через недельку-другую удалю - у меня на Диске место заканчивается и придётся его скоро чистить.



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Понедельник, 26.05.2014, 08:57
 
Ответить
СообщениеЯ в 2012 году (сейчас уже ничего почти не помню :( ) разбирался с ListView. Думал применить его на работе, но что-то отвлекло, а потом и надобность отпала...
Помню только, что на старой Планете тему курили и, кажется, была проблема с неуверенной работой на разных машинах из-за разницы версий в библиотеках. (Хотошо, что попробовал перейти по ссылке. Не знаю, почему, но ссылка на Планету получилась битая :( попробую напрямую адрес дать: http://www.planetaexcel.ru/forum....D=39876 )
Однако то, что нарыл/наплодил у себя в копилке сохранил. Сейчас выложил на Гугл.Диск и расшарил.
Поройтесь. Там много всего. Но только я через недельку-другую удалю - у меня на Диске место заканчивается и придётся его скоро чистить.

Автор - Alex_ST
Дата добавления - 26.05.2014 в 08:43
Dмитрий Дата: Понедельник, 26.05.2014, 10:44 | Сообщение № 7
Группа: Пользователи
Ранг: Участник
Сообщений: 91
Репутация: 9 ±
Замечаний: 40% ±

Excel 2010
Всем спасибо, за помощь! nilem, и Alex_ST, отдельно ОГРОМНОЕ. Вчера до утра мучался, но все-таки добил ListView, внедрил вместо Listbox. Все классно работает. Сегодня утром пришел на работу, запустил и ..... а все так хорошо начиналось. Дома Win7.32, на работе Win7.64 - беда.
Перешел по ссылке Alex_ST, My WebPage, скачал MSCOMCTL.OCX, вставил в папку C:\Windows\SysWOW64, зарегистрировал, вроде успешно. Перезагрузил, после этого, я так понимаю ListView должен был появиться в Additional Controls - пусто.
Я понимаю, что тема, может не супер, но так жалко, Control ведь классный и так все хорошо работало на Win7.32, а я уже таких планов настроил.....
[p.s.]Попробую еще зарегистрировать в system32
Возможно библиотека Microsoft Windows Common Controls 6.0 как-то отдельно подключается.
 
Ответить
СообщениеВсем спасибо, за помощь! nilem, и Alex_ST, отдельно ОГРОМНОЕ. Вчера до утра мучался, но все-таки добил ListView, внедрил вместо Listbox. Все классно работает. Сегодня утром пришел на работу, запустил и ..... а все так хорошо начиналось. Дома Win7.32, на работе Win7.64 - беда.
Перешел по ссылке Alex_ST, My WebPage, скачал MSCOMCTL.OCX, вставил в папку C:\Windows\SysWOW64, зарегистрировал, вроде успешно. Перезагрузил, после этого, я так понимаю ListView должен был появиться в Additional Controls - пусто.
Я понимаю, что тема, может не супер, но так жалко, Control ведь классный и так все хорошо работало на Win7.32, а я уже таких планов настроил.....
[p.s.]Попробую еще зарегистрировать в system32
Возможно библиотека Microsoft Windows Common Controls 6.0 как-то отдельно подключается.

Автор - Dмитрий
Дата добавления - 26.05.2014 в 10:44
Alex_ST Дата: Понедельник, 26.05.2014, 11:52 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
Да потому от его использования и пришлось в конце-концов отказаться, что это кОнтрол с непредсказуемым на разных машинах поведением.
У меня на всех компах Win-32 и ListView нормально работает на MSCOMCTL.OCX с версиями:
Версия файла : 6.1.98.39
Версия продукта : 6.01.9839
Я его тоже выложил на Гугл.Диск в ту же расшаренную папку.

Проверьте версию MSCOMCTL.OCX на своих компах этой процедурой:
[vba]
Код
Sub FileVersion()
    Dim sPath$: sPath = "C:\Windows\System32\"
    Dim sFileName$: sFileName = "MSCOMCTL.OCX"
    Dim iNum%, oFolder As Object, oFile As Object
    'Set oFolder = CreateObject("Shell.Application").Namespace(CVar(sPath))
    Set oFolder = CreateObject("Shell.Application").Namespace((sPath))
    Set oFile = oFolder.ParseName(sFileName)
    iNum = 156
Debug.Print oFolder.GetDetailsOf(oFolder.Items, iNum) & " : " & oFolder.GetDetailsOf(oFile, iNum)
    iNum = 271
Debug.Print oFolder.GetDetailsOf(oFolder.Items, iNum) & " : " & oFolder.GetDetailsOf(oFile, iNum)
End Sub
[/vba]



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеДа потому от его использования и пришлось в конце-концов отказаться, что это кОнтрол с непредсказуемым на разных машинах поведением.
У меня на всех компах Win-32 и ListView нормально работает на MSCOMCTL.OCX с версиями:
Версия файла : 6.1.98.39
Версия продукта : 6.01.9839
Я его тоже выложил на Гугл.Диск в ту же расшаренную папку.

Проверьте версию MSCOMCTL.OCX на своих компах этой процедурой:
[vba]
Код
Sub FileVersion()
    Dim sPath$: sPath = "C:\Windows\System32\"
    Dim sFileName$: sFileName = "MSCOMCTL.OCX"
    Dim iNum%, oFolder As Object, oFile As Object
    'Set oFolder = CreateObject("Shell.Application").Namespace(CVar(sPath))
    Set oFolder = CreateObject("Shell.Application").Namespace((sPath))
    Set oFile = oFolder.ParseName(sFileName)
    iNum = 156
Debug.Print oFolder.GetDetailsOf(oFolder.Items, iNum) & " : " & oFolder.GetDetailsOf(oFile, iNum)
    iNum = 271
Debug.Print oFolder.GetDetailsOf(oFolder.Items, iNum) & " : " & oFolder.GetDetailsOf(oFile, iNum)
End Sub
[/vba]

Автор - Alex_ST
Дата добавления - 26.05.2014 в 11:52
Dмитрий Дата: Понедельник, 26.05.2014, 14:31 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 91
Репутация: 9 ±
Замечаний: 40% ±

Excel 2010
Ну вроде домучал, даже дышать легче стало. Перепробовал массу вариантов, даже сейчас сложно сказать, в чем была причина. Буду дальше разрабатывать, не пришлось бы в итоге после стольких мучений вообще отказаться от данного контролла :(
 
Ответить
СообщениеНу вроде домучал, даже дышать легче стало. Перепробовал массу вариантов, даже сейчас сложно сказать, в чем была причина. Буду дальше разрабатывать, не пришлось бы в итоге после стольких мучений вообще отказаться от данного контролла :(

Автор - Dмитрий
Дата добавления - 26.05.2014 в 14:31
Alex_ST Дата: Понедельник, 26.05.2014, 14:44 | Сообщение № 10
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3209
Репутация: 609 ±
Замечаний: 0% ±

2003
не пришлось бы в итоге после стольких мучений вообще отказаться от данного контролла
Вот именно про этот вариант я и писАл:
потому от его использования и пришлось в конце-концов отказаться, что это кОнтрол с непредсказуемым на разных машинах поведением



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Понедельник, 26.05.2014, 23:00
 
Ответить
Сообщение
не пришлось бы в итоге после стольких мучений вообще отказаться от данного контролла
Вот именно про этот вариант я и писАл:
потому от его использования и пришлось в конце-концов отказаться, что это кОнтрол с непредсказуемым на разных машинах поведением

Автор - Alex_ST
Дата добавления - 26.05.2014 в 14:44
Dмитрий Дата: Понедельник, 26.05.2014, 16:14 | Сообщение № 11
Группа: Пользователи
Ранг: Участник
Сообщений: 91
Репутация: 9 ±
Замечаний: 40% ±

Excel 2010
Ну что же, пока сам лоб не разобьешь, за локти кусать не будешь %)
 
Ответить
СообщениеНу что же, пока сам лоб не разобьешь, за локти кусать не будешь %)

Автор - Dмитрий
Дата добавления - 26.05.2014 в 16:14
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Заполнение ListView (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!