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

Вход

Регистрация

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

 

= Мир MS Excel/Заполнение ListBox значениями из 2-х столбцов без повторов - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Заполнение ListBox значениями из 2-х столбцов без повторов
gvs_svg Дата: Четверг, 18.04.2019, 17:41 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Всем добрый день!
Помогите внести изменения в имеющийся программный код, что бы он заполнялся значениями двух столбцов (H:I). Пока грузится из одного столбца.
Объекта txtfltr в моем случае, нет, сортировка не нужна, все это можно выкинуть. Одним словом, что бы заполнялся информацией из двух столбцов без повторов.
Спасибо.

[vba]
Код

Private Sub FillList(Optional txtfltr As String)
    
    Dim lt As Integer, Arr
    lt = Len(txtfltr)
    lstKod.Clear
'***выбор листа*****************************************************************
    'Sheets("База").Select
    Dim myRange As Range, myCell As Range, myCollection As New Collection, _
        myElement As Variant, i As Long

'присваиваем массиву диапазон ячеек с исходным списком элементов
  Стр = (Application.CountA(ActiveSheet.Columns(8)) + 1) - 1
  Cells(Стр, 9).Activate
  k = ActiveCell.Address

'присваиваем массиву диапазон ячеек с исходным списком элементов
    Arr = Range("$H$2:" + k)
'***заполняем ListBox уникальными элементами***********************************
    On Error Resume Next
    For i = 1 To UBound(Arr, 1)
        If Left(Arr(i, 1), lt) = txtfltr Then myCollection.Add CStr(Arr(i, 1)), CStr(Arr(i, 1))
    Next
    On Error GoTo 0

    For Each myElement In myCollection
        lstKod.AddItem myElement
    Next myElement

'***сортировка ListBox**********************************************************
    With lstKod: iCountList = .ListCount - 1
        For iCount = iCountList To 1 Step -1
        For iCountTemp = iCountList To 1 Step -1
        If StrComp(.List(iCountTemp), .List(iCountTemp - 1), vbTextCompare) = -1 Then
            .AddItem .List(iCountTemp), iCountTemp - 1
            .RemoveItem iCountTemp + 1
        End If
        Next
        Next
    End With
'**********************************************************************************
lstKod.ColumnWidths = "0;150"

End Sub

[/vba]
 
Ответить
СообщениеВсем добрый день!
Помогите внести изменения в имеющийся программный код, что бы он заполнялся значениями двух столбцов (H:I). Пока грузится из одного столбца.
Объекта txtfltr в моем случае, нет, сортировка не нужна, все это можно выкинуть. Одним словом, что бы заполнялся информацией из двух столбцов без повторов.
Спасибо.

[vba]
Код

Private Sub FillList(Optional txtfltr As String)
    
    Dim lt As Integer, Arr
    lt = Len(txtfltr)
    lstKod.Clear
'***выбор листа*****************************************************************
    'Sheets("База").Select
    Dim myRange As Range, myCell As Range, myCollection As New Collection, _
        myElement As Variant, i As Long

'присваиваем массиву диапазон ячеек с исходным списком элементов
  Стр = (Application.CountA(ActiveSheet.Columns(8)) + 1) - 1
  Cells(Стр, 9).Activate
  k = ActiveCell.Address

'присваиваем массиву диапазон ячеек с исходным списком элементов
    Arr = Range("$H$2:" + k)
'***заполняем ListBox уникальными элементами***********************************
    On Error Resume Next
    For i = 1 To UBound(Arr, 1)
        If Left(Arr(i, 1), lt) = txtfltr Then myCollection.Add CStr(Arr(i, 1)), CStr(Arr(i, 1))
    Next
    On Error GoTo 0

    For Each myElement In myCollection
        lstKod.AddItem myElement
    Next myElement

'***сортировка ListBox**********************************************************
    With lstKod: iCountList = .ListCount - 1
        For iCount = iCountList To 1 Step -1
        For iCountTemp = iCountList To 1 Step -1
        If StrComp(.List(iCountTemp), .List(iCountTemp - 1), vbTextCompare) = -1 Then
            .AddItem .List(iCountTemp), iCountTemp - 1
            .RemoveItem iCountTemp + 1
        End If
        Next
        Next
    End With
'**********************************************************************************
lstKod.ColumnWidths = "0;150"

End Sub

[/vba]

Автор - gvs_svg
Дата добавления - 18.04.2019 в 17:41
excelius Дата: Пятница, 19.04.2019, 04:34 | Сообщение № 2
Группа: Пользователи
Ранг: Прохожий
Сообщений: 9
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добрый день. А приложите исходный файл? Будет видно сам ЛБ и, самое главное, исходные данные!
 
Ответить
СообщениеДобрый день. А приложите исходный файл? Будет видно сам ЛБ и, самое главное, исходные данные!

Автор - excelius
Дата добавления - 19.04.2019 в 04:34
gvs_svg Дата: Пятница, 19.04.2019, 08:53 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
Добрый день. А приложите исходный файл? Будет видно сам ЛБ и, самое главное, исходные данные!
К сообщению приложен файл: 123456.xls (56.5 Kb)
 
Ответить
Сообщение
Добрый день. А приложите исходный файл? Будет видно сам ЛБ и, самое главное, исходные данные!

Автор - gvs_svg
Дата добавления - 19.04.2019 в 08:53
nilem Дата: Пятница, 19.04.2019, 09:26 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
gvs_svg, привет
попробуйте так:
К сообщению приложен файл: 0998062.xls (53.5 Kb)


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениеgvs_svg, привет
попробуйте так:

Автор - nilem
Дата добавления - 19.04.2019 в 09:26
gvs_svg Дата: Пятница, 19.04.2019, 14:28 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
nilem, Спасибо за помощь, все работает, но есть одно "но":
- при добавлении программного кода в основной файл, ругается на <.FilterMode> вот таким образом:
К сообщению приложен файл: 3138476.jpg (33.4 Kb)
 
Ответить
Сообщениеnilem, Спасибо за помощь, все работает, но есть одно "но":
- при добавлении программного кода в основной файл, ругается на <.FilterMode> вот таким образом:

Автор - gvs_svg
Дата добавления - 19.04.2019 в 14:28
_Boroda_ Дата: Пятница, 19.04.2019, 14:35 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16718
Репутация: 6505 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
А зачем Вы апостроф перед With поставили? Он (With) показывал, что работа идет с листом "Выбор". А теперь Excel не знает, к чему относится FilterMode


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеА зачем Вы апостроф перед With поставили? Он (With) показывал, что работа идет с листом "Выбор". А теперь Excel не знает, к чему относится FilterMode

Автор - _Boroda_
Дата добавления - 19.04.2019 в 14:35
gvs_svg Дата: Пятница, 19.04.2019, 14:57 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2016
_Boroda_, ой, как же я опростоволосился....
увидев название листа, не стал дальше вникать и зарэмил его, будучи твердо уверенным, что это ничто иное как <Sheets("Выбор").Select>.
Спасибо Вам большое, что указали на мою бестолковость...
 
Ответить
Сообщение_Boroda_, ой, как же я опростоволосился....
увидев название листа, не стал дальше вникать и зарэмил его, будучи твердо уверенным, что это ничто иное как <Sheets("Выбор").Select>.
Спасибо Вам большое, что указали на мою бестолковость...

Автор - gvs_svg
Дата добавления - 19.04.2019 в 14:57
  • Страница 1 из 1
  • 1
Поиск:

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