lFJl
Дата: Пятница, 08.07.2016, 14:34 |
Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация:
6
±
Замечаний:
0% ±
Excel 2013
Доброго дня! На форме есть 2 вкладки, в первой заполняем ФИО сотрудников(с левой стороны, правая для просмотра подробностей по каждому) во второй вкладке ресурс, так же с левой стороны выбираем ресурсы или вписываем новые, с правой стороны смотрим подробности Подскажите, как при нажатии на кнопку регистрировать, добавить в таблицу база фио сотрудника*ресурсы. то есть если заполнили 2 сотрудника и 1 ресурс, то добавляем сначала строчку с 1 сотрудником+ ресурсом, затем со вторым. так же если заполним 3 сотрудника и 3 ресурса, то и строчек должно добавиться 9 шт. Это вроде не сложно сделать через условия if, но может возможно через цикл?
Доброго дня! На форме есть 2 вкладки, в первой заполняем ФИО сотрудников(с левой стороны, правая для просмотра подробностей по каждому) во второй вкладке ресурс, так же с левой стороны выбираем ресурсы или вписываем новые, с правой стороны смотрим подробности Подскажите, как при нажатии на кнопку регистрировать, добавить в таблицу база фио сотрудника*ресурсы. то есть если заполнили 2 сотрудника и 1 ресурс, то добавляем сначала строчку с 1 сотрудником+ ресурсом, затем со вторым. так же если заполним 3 сотрудника и 3 ресурса, то и строчек должно добавиться 9 шт. Это вроде не сложно сделать через условия if, но может возможно через цикл? lFJl
Ответить
Сообщение Доброго дня! На форме есть 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
Ответить
Сообщение В таком направлении смотрите [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
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация:
6
±
Замечаний:
0% ±
Excel 2013
Спасибо, сейчас попробую
Спасибо, сейчас попробую lFJl
Ответить
Сообщение Спасибо, сейчас попробую Автор - lFJl Дата добавления - 08.07.2016 в 18:41
lFJl
Дата: Воскресенье, 10.07.2016, 17:43 |
Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация:
6
±
Замечаний:
0% ±
Excel 2013
devilkurs , Попробовал, что-то не получается, можете на моем примере сделать пожалуйста? хотя бы чтобы вставлял в таблицу фио + ресурс, остальное я знаю, как сделать.
devilkurs , Попробовал, что-то не получается, можете на моем примере сделать пожалуйста? хотя бы чтобы вставлял в таблицу фио + ресурс, остальное я знаю, как сделать.lFJl
Ответить
Сообщение devilkurs , Попробовал, что-то не получается, можете на моем примере сделать пожалуйста? хотя бы чтобы вставлял в таблицу фио + ресурс, остальное я знаю, как сделать.Автор - lFJl Дата добавления - 10.07.2016 в 17:43
lFJl
Дата: Воскресенье, 10.07.2016, 18:33 |
Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 236
Репутация:
6
±
Замечаний:
0% ±
Excel 2013
Видимо полезно делать большие перерывы на работе :) У меня получился такой вот код [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
Ответить
Сообщение Видимо полезно делать большие перерывы на работе :) У меня получился такой вот код [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