2015-12-03 2 views
0

В столбце B у меня есть список компаний. У меня есть combobox под названием ComboBox1 в верхней части листа, а также кнопка с именем InsertContact1. Комбобокс вытаскивает всю компанию из столбца B, и я хочу, чтобы пользователь выбрал Company D из раскрывающегося списка и нажал кнопку контакта вставки, он найдет компанию в столбце B и вставьте строку ниже - которая позволит пользователю ввести контакт для этой компании в другой столбец (вручную на данный момент).Вставить строку, основанную на значении в ActiveX combobox

Вот мой код до сих пор ... Я не слишком уверен, где я ошибаюсь, но получаю сообщение об ошибке «Аргумент не является необязательным».

Это код, который я до сих пор в Лист1 (База данных):

Public Function ContactAdd(SearchedCompany As String) As Long 
Dim cF As Range 

With Worksheets("Database").Range("B:B") 
Set cF = .Find(What:=Worksheets("Database").ComboBox1, After:=.Cells(1, 1), LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False) 

If Not cF Is Nothing Then 
    cF.Offset(1, 0).EntireRow.Insert 
    ContactAdd = cF.Offset(1, 0).Row 
    Exit Function 
End If 
End With 

ContactAdd = 0 
End Function 

Private Sub InsertContact1_Click() 
ContactAdd 
End Sub 

Частный саб для кнопки вызова функции, однако это то, что продолжает получать сообщение об ошибке. Где я иду не так?

+0

Необходимо передать аргумент функции ContactAdd. Как ContactAdd («somecompany») – Alex4336

+0

О, отлично, я этого не понимал. Он работает, когда я просто использую любой текст ... что это делает? – Chris

+0

Способ, которым он работает, заключается в том, что ваша функция ContactAdd принимает аргумент SearchedCompany в виде строки. На данный момент вы не используете эту строку ни для чего, поэтому вы можете просто удалить аргумент из функции, а затем вызвать функцию без каких-либо аргументов. – Alex4336

ответ

0

На данный момент ваша функция ContactAdd принимает строковый аргумент, и вы вызываете его, не передавая строку.

Поскольку вы не используете строковый аргумент функции, вы можете удалить аргумент SearchedCompany из определения функции, и назвать его, как вы делаете в данный момент:

Public Function ContactAdd() As Long 

В противном случае вы можете передать аргумент при вызове функции:

Private Sub InsertContact1_Click() 

    ContactAdd ("some string") 

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