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

Вход

Регистрация

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

 

= Мир MS Excel/Добавить столько строчек, сколько чекбоксов заполнено циклом - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Добавить столько строчек, сколько чекбоксов заполнено циклом (Макросы/Sub)
Добавить столько строчек, сколько чекбоксов заполнено циклом
lFJl Дата: Пятница, 08.07.2016, 14:34 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 230
Репутация: 5 ±
Замечаний: 0% ±

Excel 2007
Доброго дня!
На форме есть 2 вкладки, в первой заполняем ФИО сотрудников(с левой стороны, правая для просмотра подробностей по каждому)
во второй вкладке ресурс, так же с левой стороны выбираем ресурсы или вписываем новые, с правой стороны смотрим подробности

Подскажите, как при нажатии на кнопку регистрировать, добавить в таблицу база фио сотрудника*ресурсы. то есть если заполнили 2 сотрудника и 1 ресурс, то добавляем сначала строчку с 1 сотрудником+ ресурсом, затем со вторым. так же если заполним 3 сотрудника и 3 ресурса, то и строчек должно добавиться 9 шт.
Это вроде не сложно сделать через условия if, но может возможно через цикл?
К сообщению приложен файл: 3189556.xls(82Kb)
 
Ответить
СообщениеДоброго дня!
На форме есть 2 вкладки, в первой заполняем ФИО сотрудников(с левой стороны, правая для просмотра подробностей по каждому)
во второй вкладке ресурс, так же с левой стороны выбираем ресурсы или вписываем новые, с правой стороны смотрим подробности

Подскажите, как при нажатии на кнопку регистрировать, добавить в таблицу база фио сотрудника*ресурсы. то есть если заполнили 2 сотрудника и 1 ресурс, то добавляем сначала строчку с 1 сотрудником+ ресурсом, затем со вторым. так же если заполним 3 сотрудника и 3 ресурса, то и строчек должно добавиться 9 шт.
Это вроде не сложно сделать через условия if, но может возможно через цикл?

Автор - lFJl
Дата добавления - 08.07.2016 в 14:34
devilkurs Дата: Пятница, 08.07.2016, 14:55 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
В таком направлении смотрите
[vba]
Код

Private Sub reg_Click()
Dim Ctr As MSForms.Control
For Each Ctr In UserForm1.Controls
    If Mid(Ctr.Name, 1, 5) = "fio_p" Then
        'Здесь действия с контролами fio_p1,2,3
    End
Next
End Sub
[/vba]


 
Ответить
СообщениеВ таком направлении смотрите
[vba]
Код

Private Sub reg_Click()
Dim Ctr As MSForms.Control
For Each Ctr In UserForm1.Controls
    If Mid(Ctr.Name, 1, 5) = "fio_p" Then
        'Здесь действия с контролами fio_p1,2,3
    End
Next
End Sub
[/vba]

Автор - devilkurs
Дата добавления - 08.07.2016 в 14:55
lFJl Дата: Пятница, 08.07.2016, 18:41 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 230
Репутация: 5 ±
Замечаний: 0% ±

Excel 2007
Спасибо, сейчас попробую
 
Ответить
СообщениеСпасибо, сейчас попробую

Автор - lFJl
Дата добавления - 08.07.2016 в 18:41
lFJl Дата: Воскресенье, 10.07.2016, 17:43 | Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 230
Репутация: 5 ±
Замечаний: 0% ±

Excel 2007
devilkurs, Попробовал, что-то не получается, можете на моем примере сделать пожалуйста? хотя бы чтобы вставлял в таблицу фио + ресурс, остальное я знаю, как сделать.
 
Ответить
Сообщениеdevilkurs, Попробовал, что-то не получается, можете на моем примере сделать пожалуйста? хотя бы чтобы вставлял в таблицу фио + ресурс, остальное я знаю, как сделать.

Автор - lFJl
Дата добавления - 10.07.2016 в 17:43
lFJl Дата: Воскресенье, 10.07.2016, 18:33 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 230
Репутация: 5 ±
Замечаний: 0% ±

Excel 2007
Видимо полезно делать большие перерывы на работе :)
У меня получился такой вот код
[vba]
Код
Private Sub reg_Click()
On Error Resume Next

For fio_i = 1 To 3
    If Me.Controls("fio_p" & fio_i).Value <> "" Then
        For res_i = 1 To 3
            If Me.Controls("res" & res_i).Value <> "" Then
                lLastRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1 'последняя непустая строка в таблице
                Rows(lLastRow + 1).Select
                Cells(ActiveCell.Row, 1).Value = "0" & (Cells(ActiveCell.Row - 1, 1).Value + 1) 'Порядковый рег.номер
                Cells(ActiveCell.Row, 2).Value = Me.Controls("fio_p" & fio_i).Value
                Cells(ActiveCell.Row, 3).Value = Application.WorksheetFunction.VLookup(Me.Controls("fio_p" & fio_i).Value, Range("polz"), 2, False)
                Cells(ActiveCell.Row, 4).Value = Me.Controls("res" & res_i).Value
                Cells(ActiveCell.Row, 5).Value = Application.WorksheetFunction.VLookup(Me.Controls("res" & res_i).Value, Range("база_ресурс"), 2, False)
                Cells(ActiveCell.Row, 6).Value = Application.WorksheetFunction.VLookup(Me.Controls("res" & res_i).Value, Range("база_ресурс"), 3, False)
            End If
        Next
    End If
Next

With ActiveSheet.ListObjects("база") 'увеличиваем таблицу до последней заявки
    .Resize .Range.Resize(lLastRow + 1)
End With

lLastRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1 'последняя непустая строка в таблице
Cells(lLastRow + 1, 1).Select
Unload UserForm1
End Sub
[/vba]

Что скажите? стоит что-то переписать? или все красиво?
 
Ответить
СообщениеВидимо полезно делать большие перерывы на работе :)
У меня получился такой вот код
[vba]
Код
Private Sub reg_Click()
On Error Resume Next

For fio_i = 1 To 3
    If Me.Controls("fio_p" & fio_i).Value <> "" Then
        For res_i = 1 To 3
            If Me.Controls("res" & res_i).Value <> "" Then
                lLastRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1 'последняя непустая строка в таблице
                Rows(lLastRow + 1).Select
                Cells(ActiveCell.Row, 1).Value = "0" & (Cells(ActiveCell.Row - 1, 1).Value + 1) 'Порядковый рег.номер
                Cells(ActiveCell.Row, 2).Value = Me.Controls("fio_p" & fio_i).Value
                Cells(ActiveCell.Row, 3).Value = Application.WorksheetFunction.VLookup(Me.Controls("fio_p" & fio_i).Value, Range("polz"), 2, False)
                Cells(ActiveCell.Row, 4).Value = Me.Controls("res" & res_i).Value
                Cells(ActiveCell.Row, 5).Value = Application.WorksheetFunction.VLookup(Me.Controls("res" & res_i).Value, Range("база_ресурс"), 2, False)
                Cells(ActiveCell.Row, 6).Value = Application.WorksheetFunction.VLookup(Me.Controls("res" & res_i).Value, Range("база_ресурс"), 3, False)
            End If
        Next
    End If
Next

With ActiveSheet.ListObjects("база") 'увеличиваем таблицу до последней заявки
    .Resize .Range.Resize(lLastRow + 1)
End With

lLastRow = ActiveSheet.UsedRange.Row + ActiveSheet.UsedRange.Rows.Count - 1 'последняя непустая строка в таблице
Cells(lLastRow + 1, 1).Select
Unload UserForm1
End Sub
[/vba]

Что скажите? стоит что-то переписать? или все красиво?

Автор - lFJl
Дата добавления - 10.07.2016 в 18:33
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Добавить столько строчек, сколько чекбоксов заполнено циклом (Макросы/Sub)
Страница 1 из 11
Поиск:

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