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

Вход

Регистрация

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

 

= Мир MS Excel/Диалоговое окно вывод нескольких столбцов с листа - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Диалоговое окно вывод нескольких столбцов с листа (Формулы/Formulas)
Диалоговое окно вывод нескольких столбцов с листа
Алексей191919 Дата: Вторник, 19.02.2019, 21:42 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Доброе время суток!
подскажите как совместить этот код
[vba]
Код
.RowSource = "=A2:D2"
[/vba]
с этим
[vba]
Код
Private Sub UserForm_Initialize()
With ListBox1
.ColumnHeads = True
.ColumnCount = 4
.ColumnWidths = "60;80;60;30"
.MultiSelect = fmMultiSelectSingle
.TextColumn = 1
.BoundColumn = 0
For i = 1 To Sheets(1).Cells(Rows.Count, 2).End(xlUp).Row
If Sheets(1).Cells(i, 2).Value = "см" Then .AddItem (Sheets(1).Cells(i, 1).Value)
Next
End With
[/vba]

Ну или может другие есть способы подскажите
Принцип (В диалоговом окне, в листбоксе выходит информация с листа excel, но с одного столбца, а мне надо с двух)


Сообщение отредактировал Алексей191919 - Вторник, 19.02.2019, 22:47
 
Ответить
СообщениеДоброе время суток!
подскажите как совместить этот код
[vba]
Код
.RowSource = "=A2:D2"
[/vba]
с этим
[vba]
Код
Private Sub UserForm_Initialize()
With ListBox1
.ColumnHeads = True
.ColumnCount = 4
.ColumnWidths = "60;80;60;30"
.MultiSelect = fmMultiSelectSingle
.TextColumn = 1
.BoundColumn = 0
For i = 1 To Sheets(1).Cells(Rows.Count, 2).End(xlUp).Row
If Sheets(1).Cells(i, 2).Value = "см" Then .AddItem (Sheets(1).Cells(i, 1).Value)
Next
End With
[/vba]

Ну или может другие есть способы подскажите
Принцип (В диалоговом окне, в листбоксе выходит информация с листа excel, но с одного столбца, а мне надо с двух)

Автор - Алексей191919
Дата добавления - 19.02.2019 в 21:42
vikttur Дата: Вторник, 19.02.2019, 22:20 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Зачем параметры ListBox прописывать в коде? Можно же сразу задать, при создании формы.

По вопросу:[vba]
Код
If Sheets(1).Cells(i, 2).Value = "см" Then
    .AddItem Sheets(1).Cells(i, 1).Value
    .List(.ListCount - 1, 1) = Sheets(1).Cells(i, 4).Value
End If
[/vba]


Сообщение отредактировал vikttur - Вторник, 19.02.2019, 23:01
 
Ответить
СообщениеЗачем параметры ListBox прописывать в коде? Можно же сразу задать, при создании формы.

По вопросу:[vba]
Код
If Sheets(1).Cells(i, 2).Value = "см" Then
    .AddItem Sheets(1).Cells(i, 1).Value
    .List(.ListCount - 1, 1) = Sheets(1).Cells(i, 4).Value
End If
[/vba]

Автор - vikttur
Дата добавления - 19.02.2019 в 22:20
Алексей191919 Дата: Среда, 20.02.2019, 00:30 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
если вот так
[vba]
Код
Private Sub UserForm_Initialize()
With ListBox1
.ColumnHeads = True
.ColumnCount = 4
.ColumnWidths = "60;80;60;30"
.MultiSelect = fmMultiSelectSingle
.TextColumn = 1
.BoundColumn = 0
For i = 1 To Sheets(1).Cells(Rows.Count, 2).End(xlUp).Row
If Sheets(1).Cells(i, 2).Value = "см" Then
    .AddItem Sheets(1).Cells(i, 1).Value
    .List(.ListCount - 1, 1) = Sheets(1).Cells(i, 4).Value
End If
Next
End With
[/vba]

то что то не получается
 
Ответить
Сообщениеесли вот так
[vba]
Код
Private Sub UserForm_Initialize()
With ListBox1
.ColumnHeads = True
.ColumnCount = 4
.ColumnWidths = "60;80;60;30"
.MultiSelect = fmMultiSelectSingle
.TextColumn = 1
.BoundColumn = 0
For i = 1 To Sheets(1).Cells(Rows.Count, 2).End(xlUp).Row
If Sheets(1).Cells(i, 2).Value = "см" Then
    .AddItem Sheets(1).Cells(i, 1).Value
    .List(.ListCount - 1, 1) = Sheets(1).Cells(i, 4).Value
End If
Next
End With
[/vba]

то что то не получается

Автор - Алексей191919
Дата добавления - 20.02.2019 в 00:30
vikttur Дата: Среда, 20.02.2019, 00:44 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

End Sub потеряли.
Будете гадалку ждать или пример с ошибкой прикрепите?


Сообщение отредактировал vikttur - Среда, 20.02.2019, 00:47
 
Ответить
СообщениеEnd Sub потеряли.
Будете гадалку ждать или пример с ошибкой прикрепите?

Автор - vikttur
Дата добавления - 20.02.2019 в 00:44
Алексей191919 Дата: Среда, 20.02.2019, 13:54 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
вот фаил
К сообщению приложен файл: 3434232.rar (24.8 Kb)
 
Ответить
Сообщениевот фаил

Автор - Алексей191919
Дата добавления - 20.02.2019 в 13:54
vikttur Дата: Среда, 20.02.2019, 14:43 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Непонятно, что Вы хотите получить. Прячете два столбца listBox (ширина нулевая). Я в своем примере выводил данные во второй столбец, в примере он невидим.

Параметры listBox заданы вручную (окно Properties), без VBA.
Отобразил столбцы, данные со всех 4-х столбцов таблицы попадают в listBox
[vba]
Код
Private Sub UserForm_Initialize()
Dim i As Long
    With lbDays
        For i = 1 To Sheets(1).Cells(Rows.Count, 2).End(xlUp).Row
            If Sheets(1).Cells(i, 3).Value = "ñì" Then
                .AddItem Sheets(1).Cells(i, 1).Value
                .List(.ListCount - 1, 1) = Sheets(1).Cells(i, 2).Value
                .List(.ListCount - 1, 2) = Sheets(1).Cells(i, 3).Value
                .List(.ListCount - 1, 3) = Sheets(1).Cells(i, 4).Value
            End If
        Next i
    End With
End Sub
[/vba]
Правильнее: взять данные с листа в массив и обрабатывать его, без обращения к листу. Но это для Вас, надеюсь, будет следующим шагом :)
К сообщению приложен файл: lb2.xlsm (25.8 Kb)


Сообщение отредактировал vikttur - Среда, 20.02.2019, 14:48
 
Ответить
СообщениеНепонятно, что Вы хотите получить. Прячете два столбца listBox (ширина нулевая). Я в своем примере выводил данные во второй столбец, в примере он невидим.

Параметры listBox заданы вручную (окно Properties), без VBA.
Отобразил столбцы, данные со всех 4-х столбцов таблицы попадают в listBox
[vba]
Код
Private Sub UserForm_Initialize()
Dim i As Long
    With lbDays
        For i = 1 To Sheets(1).Cells(Rows.Count, 2).End(xlUp).Row
            If Sheets(1).Cells(i, 3).Value = "ñì" Then
                .AddItem Sheets(1).Cells(i, 1).Value
                .List(.ListCount - 1, 1) = Sheets(1).Cells(i, 2).Value
                .List(.ListCount - 1, 2) = Sheets(1).Cells(i, 3).Value
                .List(.ListCount - 1, 3) = Sheets(1).Cells(i, 4).Value
            End If
        Next i
    End With
End Sub
[/vba]
Правильнее: взять данные с листа в массив и обрабатывать его, без обращения к листу. Но это для Вас, надеюсь, будет следующим шагом :)

Автор - vikttur
Дата добавления - 20.02.2019 в 14:43
Алексей191919 Дата: Среда, 20.02.2019, 20:13 | Сообщение № 7
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Спасибо большое всё получилось, Вы профи!!!

Есть ещё одна просьба если не затруднит и время позволит
в этой же книге есть скрипт переноса выбранной строки(или несколько) в диалоговом окне , при нажатие на кнопку переносится на другой лист, но вот переносится только 1 столбец, а хотелось бы чтоб вся выделенная строка(т.е. несколько столбцов в строке)
заранее спасибо
 
Ответить
СообщениеСпасибо большое всё получилось, Вы профи!!!

Есть ещё одна просьба если не затруднит и время позволит
в этой же книге есть скрипт переноса выбранной строки(или несколько) в диалоговом окне , при нажатие на кнопку переносится на другой лист, но вот переносится только 1 столбец, а хотелось бы чтоб вся выделенная строка(т.е. несколько столбцов в строке)
заранее спасибо

Автор - Алексей191919
Дата добавления - 20.02.2019 в 20:13
vikttur Дата: Среда, 20.02.2019, 22:36 | Сообщение № 8
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Это уже другая тема.
 
Ответить
СообщениеЭто уже другая тема.

Автор - vikttur
Дата добавления - 20.02.2019 в 22:36
Алексей191919 Дата: Четверг, 21.02.2019, 16:27 | Сообщение № 9
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
ок
 
Ответить
Сообщениеок

Автор - Алексей191919
Дата добавления - 21.02.2019 в 16:27
Алексей191919 Дата: Пятница, 22.02.2019, 19:38 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Доброе время суток!
Решил не начинать новую тему, так как смысл один и тоже, только усложнённый
в фаил добавил окно 2 хотелось бы как то клонировать а показывает ошибку
[vba]
Код
Private Sub UserForm_Initialize()
Dim i As Long
    With lbDays
        For i = 1 To Sheets(1).Cells(Rows.Count, 2).End(xlUp).Row
            If Sheets(1).Cells(i, 3).Value = "см" Then
                .AddItem Sheets(1).Cells(i, 1).Value
                .List(.ListCount - 1, 1) = Sheets(1).Cells(i, 2).Value
                .List(.ListCount - 1, 2) = Sheets(1).Cells(i, 3).Value
                .List(.ListCount - 1, 3) = Sheets(1).Cells(i, 4).Value
            End If
        Next i
    End With
Dim i As Long
    With lbDays1
        For i = 1 To Sheets(1).Cells(Rows.Count, 2).End(xlUp).Row
            If Sheets(1).Cells(i, 3).Value = "м" Then
                .AddItem Sheets(1).Cells(i, 1).Value
                .List(.ListCount - 1, 1) = Sheets(1).Cells(i, 2).Value
                .List(.ListCount - 1, 2) = Sheets(1).Cells(i, 3).Value
                .List(.ListCount - 1, 3) = Sheets(1).Cells(i, 4).Value
            End If
        Next i
    End With
End Sub
[/vba]
подскажите где ошибка при совмещении
К сообщению приложен файл: 0989906.xlsm (24.5 Kb)
 
Ответить
СообщениеДоброе время суток!
Решил не начинать новую тему, так как смысл один и тоже, только усложнённый
в фаил добавил окно 2 хотелось бы как то клонировать а показывает ошибку
[vba]
Код
Private Sub UserForm_Initialize()
Dim i As Long
    With lbDays
        For i = 1 To Sheets(1).Cells(Rows.Count, 2).End(xlUp).Row
            If Sheets(1).Cells(i, 3).Value = "см" Then
                .AddItem Sheets(1).Cells(i, 1).Value
                .List(.ListCount - 1, 1) = Sheets(1).Cells(i, 2).Value
                .List(.ListCount - 1, 2) = Sheets(1).Cells(i, 3).Value
                .List(.ListCount - 1, 3) = Sheets(1).Cells(i, 4).Value
            End If
        Next i
    End With
Dim i As Long
    With lbDays1
        For i = 1 To Sheets(1).Cells(Rows.Count, 2).End(xlUp).Row
            If Sheets(1).Cells(i, 3).Value = "м" Then
                .AddItem Sheets(1).Cells(i, 1).Value
                .List(.ListCount - 1, 1) = Sheets(1).Cells(i, 2).Value
                .List(.ListCount - 1, 2) = Sheets(1).Cells(i, 3).Value
                .List(.ListCount - 1, 3) = Sheets(1).Cells(i, 4).Value
            End If
        Next i
    End With
End Sub
[/vba]
подскажите где ошибка при совмещении

Автор - Алексей191919
Дата добавления - 22.02.2019 в 19:38
vikttur Дата: Пятница, 22.02.2019, 23:19 | Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2941
Репутация: 526 ±
Замечаний: 0% ±

Переменную нужно объявлять один раз
[vba]
Код
Dim i As Long
[/vba]
одна строка лишняя

Цикл незачем два раза запускать. А если использовать массив вместо работы с листом, получится быстрее и код читабельнее:
[vba]
Код
Private Sub UserForm_Initialize()
Dim a()
Dim i As Long
    With Sheets(1)
        i = .Cells(.Rows.Count, 2).End(xlUp).Row
        a = .Range("A1:D" & i).Value
    End With

    For i = 2 To UBound(a)
        Select Case a(i, 3)
        Case "м"
            With lbDays1
                .AddItem a(i, 1)
                .List(.ListCount - 1, 1) = a(i, 2)
                .List(.ListCount - 1, 2) = a(i, 3)
                .List(.ListCount - 1, 3) = a(i, 4)
            End With
        Case "см"
            With lbDays
                .AddItem a(i, 1)
                .List(.ListCount - 1, 1) = a(i, 2)
                .List(.ListCount - 1, 2) = a(i, 3)
                .List(.ListCount - 1, 3) = a(i, 4)
            End With
        End Select
    Next i
End Sub
[/vba]


Сообщение отредактировал vikttur - Суббота, 23.02.2019, 14:18
 
Ответить
СообщениеПеременную нужно объявлять один раз
[vba]
Код
Dim i As Long
[/vba]
одна строка лишняя

Цикл незачем два раза запускать. А если использовать массив вместо работы с листом, получится быстрее и код читабельнее:
[vba]
Код
Private Sub UserForm_Initialize()
Dim a()
Dim i As Long
    With Sheets(1)
        i = .Cells(.Rows.Count, 2).End(xlUp).Row
        a = .Range("A1:D" & i).Value
    End With

    For i = 2 To UBound(a)
        Select Case a(i, 3)
        Case "м"
            With lbDays1
                .AddItem a(i, 1)
                .List(.ListCount - 1, 1) = a(i, 2)
                .List(.ListCount - 1, 2) = a(i, 3)
                .List(.ListCount - 1, 3) = a(i, 4)
            End With
        Case "см"
            With lbDays
                .AddItem a(i, 1)
                .List(.ListCount - 1, 1) = a(i, 2)
                .List(.ListCount - 1, 2) = a(i, 3)
                .List(.ListCount - 1, 3) = a(i, 4)
            End With
        End Select
    Next i
End Sub
[/vba]

Автор - vikttur
Дата добавления - 22.02.2019 в 23:19
Алексей191919 Дата: Воскресенье, 24.02.2019, 09:14 | Сообщение № 12
Группа: Пользователи
Ранг: Новичок
Сообщений: 20
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Спасибо, вообще чётко и понятно
 
Ответить
СообщениеСпасибо, вообще чётко и понятно

Автор - Алексей191919
Дата добавления - 24.02.2019 в 09:14
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Диалоговое окно вывод нескольких столбцов с листа (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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