Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Добавление диапазона на лист при выборе Item в ListBox
 
Не могу понять, что не так пишу в коде. При нажатии на кнопку начать день и выборе сотрудников, на лист "Ежедневный план по  сотрудникам" добавляется табличка (диапазон). Так вот при выборе одного или двух сотрудников, всё корректно отрабатывает, но вот если выбрать их 3 и более, на  листе "Ежедневный план по  сотрудникам" всё равно только две таблички создается.
И еще не могу понять как мне в эту вставленную табличку внести по какому конкретно сотруднику я заполняю план, то есть ФИО сотрудника должно замениться на Selected Item из ListBox1
 
Вообще не понятно какие таблички и куда должны добавляться.
При открытии книги по событию идет попытка открыть какую-то юзерформу, которой в книге нет.
Не убитые связи и циклические ссылки. В итоге пока думал что там поудалять в Вашем коде Excel умер)
 
Вот вроде удалила лишние ненужные ссылки на формы, формулы
 
Немного переделал, а то что то там уж совсем за мудрено.
Код
Private Sub DistributionOfPlans_Click()
    Dim lrow&, i&, j&, arr()
    With Лист7
        lrow = .Range("B" & .Rows.Count).End(xlUp).Row
        arr = .Range(.[B14], .Range("d" & lrow)).Value
        For j = 0 To Me.ListBox1.ListCount - 1
            If Me.ListBox1.Selected(j) Then
                For i = 1 To UBound(arr)
                    If arr(i, 1) = Me.ListBox1.List(j) Then arr(i, 3) = arr(i, 3) + 1: Exit For
                Next i
                lrow = Лист6.Range("a" & .Rows.Count).End(xlUp).Row
                If lrow <> 1 Then lrow = lrow + 2
                .[aa1].CurrentRegion.Copy Лист6.Cells(lrow, 1)
            End If
        Next j
        .Range("b14").Resize(UBound(arr), UBound(arr, 2)).Value = arr
    End With
End Sub
"Все гениальное просто, а все простое гениально!!!"
 
Благодарю,теперь работает корректно.
А каким образом в эту вставленную табличку внести ФИО по какому конкретно сотруднику я заполняю план, то есть ФИО сотрудника должно замениться на Selected Item из ListBox1. Или это изначально неверный подход выбран?
 
AnMig17, план берется с первого листа, т.е. из основной таблицы? Если да, то при запуске формы берем всю эту таблицу в массив, и при генерации табличек формируем микро массивы по каждому трудоголику и выгружаем их после вставки таблички на второй лист в соотв. место.
 
нет, там всё намного сложнее ежедневный план он рассчитывается. А на основной таблице, аккумулируется по дням
Ладно спасибо, я подумаю как это реализовать иначе
 
AnMig17,если только ФИО, то на основе кода выложенного выше:
Код
Лист6.Cells(lrow, 1).Offset(1,0)=ListBox1.List(j)
 
Спасибо огромное, помогли, дальше я соображу!
 
Цитата
AnMig17 написал:
А каким образом в эту вставленную табличку внести ФИО по какому конкретно сотруднику я заполняю план
Может так?
Код
Private Sub DistributionOfPlans_Click()
    Dim lrow&, i&, j&, arr(), iRng As Range
    With Лист7
        Set iRng = .[aa1].CurrentRegion
        lrow = .Range("B" & .Rows.Count).End(xlUp).Row
        arr = .Range(.[B14], .Range("d" & lrow)).Value
        For j = 0 To Me.ListBox1.ListCount - 1
            If Me.ListBox1.Selected(j) Then
                For i = 1 To UBound(arr)
                    If arr(i, 1) = Me.ListBox1.List(j) Then arr(i, 3) = arr(i, 3) + 1: Exit For
                Next i
                lrow = Лист6.Range("a" & .Rows.Count).End(xlUp).Row
                If lrow <> 1 Then lrow = lrow + 2
                iRng(2, 1) = Me.ListBox1.List(j)
                iRng.Copy Лист6.Cells(lrow, 1)
            End If
        Next j
        iRng(2, 1).Value = "ФИО сотрудника"
        .Range("b14").Resize(UBound(arr), UBound(arr, 2)).Value = arr
    End With
End Sub
"Все гениальное просто, а все простое гениально!!!"
 
Благодарю за ещё один вариант решения. Тоже отрабатывает как нужно
 
AnMig17, Скажите, для чего нужна вторая форма в файле? и что делает в оригинальном коде эта строка?
Код
EndOfDay.ListBox1.AddItem Me.ListBox1.List(j)
"Все гениальное просто, а все простое гениально!!!"
 
Чтобы забить фактические данные по сотрудникам, которых мы отметили работающими в начале дня. Листа куда передаются эти данные в примере нет. У меня всё еще в процессе разработки, поэтому вопросы возникают поэтапно
 
В примере реализация в одной форме с помощью Эл. Упр. MultiPage. Посмотрите м.б. так будет удобней, чем несколько форм городить.
"Все гениальное просто, а все простое гениально!!!"
 
А с какими проблемами я могу столкнуться при работе с несколькими формами? В рабочем варианте файла у меня их 5. Две из них я точно могу объединить в одну по предложенному вами примеру
 
Цитата
AnMig17 написал:
А с какими проблемами я могу столкнуться при работе с несколькими формами
Да в принципе ни с какими. Мне удобней через MultiPage работать,  код  и модули классов писать для одной формы (для меня) проще, чем распаляться на несколько форм. А так как кому привычней тот так и работает.  :D
Изменено: Nordheim - 29 Мар 2018 10:01:02
"Все гениальное просто, а все простое гениально!!!"
 
Спасибо за замечания и рекомендации)) Я ещё совсем нуб в этом деле, набираюсь опыта, так что прислушаюсь)
Страницы: 1
Читают тему (гостей: 1)
Наверх