2015-09-23 3 views
1

Привет В настоящее время я имею форму пользователя, которые выглядят, как это для добавления новых проектов: enter image description hereУстановка условия для поля со списком в форме пользователя

В поле со списком, пользователь может выбрать «Большой проект», «Средний проект» и «Малый проект». Каждого размер проекта состоит из определенного диапазона в листе, показанном ниже: enter image description here

Пользователь добавит в деталях проекта в UserForm и выберите выпадающую выпадающий список для размеров проекта и новых деталей проекта будет добавлен в пустые строки, найденные под каждым конкретным размером проекта. К сожалению, я не уверен, как это сделать в зависимости от размера каждого проекта в выпадающем списке со списком, чтобы, когда пользователь уже выбрал размеры проекта и нажал кнопку добавления команды, новые детали проекта будут добавлены к новая строка, найденная в выбранных размерах проекта. Кроме того, у меня есть некоторые проблемы с кнопкой добавления команды, которая говорит «Определенная приложением или объектная ошибка» в кодах, показанных ниже, и не уверен, что коды помогут добавить в кучку, найденную на конкретных размерах проекта. Я довольно потерян в том, что делать как для кнопки combobox, так и для команды add.

Private Sub CommandAddButton1_Click() 

lastrow = Sheets("Program status summary").Range("B").End(xlDown).Row 'shows the above mention error' 

    Cells(lastrow + 1, "B").Value = TextBoxProjCode.Text 
    Cells(lastrow + 1, "C").Value = TextBoxProjName.Text 
    Cells(lastrow + 1, "D").Value = TextBoxSector.Text 
    Cells(lastrow + 1, "E").Value = TextBoxObjective.Text 
    Cells(lastrow + 1, "H").Value = TextBoxProjSponsor.Text 
    Cells(lastrow + 1, "G").Value = TextBoxProjSponsorNew.Text 
    Cells(lastrow + 1, "F").Value = TextBoxProjM.Text 
    Cells(lastrow + 1, "T").Value = TextBoxRegulatory.Text 
    Cells(lastrow + 1, "N").Value = TextBoxRiskLvl.Text 
    Cells(lastrow + 1, "M").Value = TextBoxDatePar.Text 
    Cells(lastrow + 1, "J").Value = TextBoxCostPar.Text 
    Cells(lastrow + 1, "O").Value = TextBoxAffectCust.Text 
    Cells(lastrow + 1, "Q").Value = TextBoxCustNonRetail.Text 
    Cells(lastrow + 1, "P").Value = TextBoxCustRetail.Text 
    Cells(lastrow + 1, "S").Value = TextBoxOutsourcingImp.Text 
    Cells(lastrow + 1, "R").Value = TextBoxKeyStatus.Text 
    Cells(lastrow + 1, "K").Value = TextBoxSchStart.Text 
    Cells(lastrow + 1, "L").Value = TextBoxSchEnd.Text 
    Cells(lastrow + 1, "V").Value = TextBoxRagSchedule.Text 
    Cells(lastrow + 1, "U").Value = TextBoxRagFinancial.Text 
    Cells(lastrow + 1, "W").Value = TextBoxRagBenefit.Text 
    Cells(lastrow + 1, "I").Value = TextBoxCost.Text 

Unload AddProject 

End Sub 

Я действительно надеюсь, что кто-то может помочь мне с со списком размеров проекта в вставив диапазон для каждого размера проекта и ошибки на командной кнопке Add. Любая помощь будет оценена по достоинству. Спасибо.

+1

'Range («B»)' не является допустимым диапазоном –

+0

@nabilah, это гарантирует, что всегда есть место (пустая строка), доступное для вставки проекта внутри своей категории? –

+0

Привет, да всегда есть пустая строка между размерами каждого проекта, как показано на изображении выше, если я не могу найти код, который позволит мне вставлять новые строки и в то же время вставлять новые детали проекта в новые вставленные строки в категория @ASH – nabilah

ответ

1
Private Sub CommandAddButton1_Click() 
    Dim sh As Worksheet: Set sh = ThisWorkbook.Sheets("Program status summary") 
    Dim emptyRow As Integer: emptyRow = 1 + sh.UsedRange.Find(ComboBoxProjSizes.Text).End(xlDown).row 

    With sh 
    .Cells(emptyRow, "A").Value = 1 + Application.Max(.Columns(1)) ' to generate a new identifier in column 1 

    .Cells(emptyRow, "B").Value = TextBoxProjCode.Text 
    .Cells(emptyRow, "C").Value = TextBoxProjName.Text 
    .Cells(emptyRow, "D").Value = TextBoxSector.Text 
    .Cells(emptyRow, "E").Value = TextBoxObjective.Text 
    .Cells(emptyRow, "H").Value = TextBoxProjSponsor.Text 
    .Cells(emptyRow, "G").Value = TextBoxProjSponsorNew.Text 
    .Cells(emptyRow, "F").Value = TextBoxProjM.Text 
    .Cells(emptyRow, "T").Value = TextBoxRegulatory.Text 
    .Cells(emptyRow, "N").Value = TextBoxRiskLvl.Text 
    .Cells(emptyRow, "M").Value = TextBoxDatePar.Text 
    .Cells(emptyRow, "J").Value = TextBoxCostPar.Text 
    .Cells(emptyRow, "O").Value = TextBoxAffectCust.Text 
    .Cells(emptyRow, "Q").Value = TextBoxCustNonRetail.Text 
    .Cells(emptyRow, "P").Value = TextBoxCustRetail.Text 
    .Cells(emptyRow, "S").Value = TextBoxOutsourcingImp.Text 
    .Cells(emptyRow, "R").Value = TextBoxKeyStatus.Text 
    .Cells(emptyRow, "K").Value = TextBoxSchStart.Text 
    .Cells(emptyRow, "L").Value = TextBoxSchEnd.Text 
    .Cells(emptyRow, "V").Value = TextBoxRagSchedule.Text 
    .Cells(emptyRow, "U").Value = TextBoxRagFinancial.Text 
    .Cells(emptyRow, "W").Value = TextBoxRagBenefit.Text 
    .Cells(emptyRow, "I").Value = TextBoxCost.Text 
    .Rows(emptyRow+1).Insert 
    End With 
    Unload AddProject 
End Sub 
+0

. Привет, я пробовал ваш код, но он дал ошибку в строке ': emptyRow = Sheets («Сводка состояния программы»). FindEmptyRow (ComboBoxProjSizes.Text) », который говорит, что объект не поддерживает это свойство или метод. Кроме того, я также не знаю, как я должен установить набор диапазонов для выпадающего списка со списком для каждого из моих размеров проекта для «Private Sub ComboBoxProjSizes_Change()», есть ли способ, которым я мог бы создать код с вашей помощью ? @ A.S.H – nabilah

+0

Hi @nabilah, пожалуйста, возьмите текущую версию и скопируйте/вставьте ее как есть и скажите мне, работает ли она –

+0

Привет, я попробовал код, который дал, и он дал ошибку, о которой я упоминал выше. Он говорит, что «объект не поддерживает это свойство или метод» в строке «emptyRow = Sheets» («Сводка состояния программы»). FindEmptyRow (ComboBoxProjSizes.Text) » – nabilah

Смежные вопросы