2014-01-07 8 views
0

Я создал этот инвесторов список рассылки для работы цели, и нужно добавить еще несколько функций:Vba InputBox первенствует

мне нужно «запереть» в InputBox, а это означает, что вы должны заполнить все варианты в противном случае msgbox появится «Пожалуйста, заполните все параметры».

Мне также нужно заблокировать всю электронную таблицу - так что можно добавить инвестора в список писем через поле ввода. Это должно быть возможным только добавить инвестор без InputBox через администратор

У меня есть поиск по всему интернету, и не может найти такие функции

Помощи очень ценятся!

Private Sub OKButton_Click() 
Dim emptyrow As Long 

'Make sheet1 active 
Ark1.Activate 

'determine emptyrow 
emptyrow = WorksheetFunction.CountA(Range("A:A")) + 1 

'Transfer information 
Cells(emptyrow, 1).Value = Email.Value 
Cells(emptyrow, 2).Value = Bank.Value 
Cells(emptyrow, 3).Value = FirstName.Value 
Cells(emptyrow, 4).Value = Surname.Value 
Cells(emptyrow, 5).Value = AddIn.Value 
Cells(emptyrow, 6).Value = TypeComboBox.Value 



If CheckBox1.Value = True Then Cells(emptyrow, 7).Value = CheckBox1.Caption 

If CheckBox2.Value = True Then Cells(emptyrow, 7).Value = Cells(emptyrow, 7).Value & " " & CheckBox2.Caption 

If CheckBox3.Value = True Then Cells(emptyrow, 7).Value = Cells(emptyrow, 7).Value & " " & CheckBox3.Caption 

If CheckBox4.Value = True Then Cells(emptyrow, 7).Value = Cells(emptyrow, 7).Value & " " & CheckBox4.Caption 

If CheckBox5.Value = True Then Cells(emptyrow, 7).Value = Cells(emptyrow, 7).Value & " " & CheckBox5.Caption 

Unload Me 

MsgBox "Investor successfully added" 


End Sub 

Private Sub UserForm_Click() 

End Sub 

Private Sub UserForm_Initialize() 

'empty all textboxes 

Email.Value = "" 
Bank.Value = "" 
FirstName.Value = "" 
Surname.Value = "" 
AddIn.Value = "" 

TypeComboBox.Clear 

'Fill dinnercombobox 
With TypeComboBox 
.AddItem "Bank" 
.AddItem "Corporate" 
.AddItem "DCM" 
.AddItem "Fund Manager" 
.AddItem "FSA" 
.AddItem "Investor" 
.AddItem "Insurance" 
.AddItem "Magazine" 
.AddItem "Other" 
.AddItem "Pension Fund" 
.AddItem "Rating agency" 



End With 

'uncheck wishbox 
CheckBox1.Value = False 
CheckBox2.Value = False 
CheckBox3.Value = False 
CheckBox4.Value = False 

'set focus on email box 
Email.SetFocus 

End Sub 
+0

Вы должны добавить вложенное, если в событии смены «Textboxes», которое проверяет наличие значений или нет. Чтобы заблокировать лист, вы можете сделать это в событии «Workbooks», защищающем лист на «UserInterfaceOnly», установленном на «True». – L42

+0

Можете ли вы указать это? Я очень зелёный в кодировке – user3168488

+0

Теперь я понял, как заблокировать ячейки, так что вы можете только войти через входной ящик, мне все равно нужно выяснить, как разрешить заполнение всего ввода – user3168488

ответ

0

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

Private Sub Email_Change() 

If Me.Email.Value <> "" And Me.Bank.Value <> "" And Me.FirstName.Value <> "" And _ 
    Me.Surname.Value <> "" And Me.AddIn.Value <> "" And Me.TypeComboBox.Value <> "" Then 

    Me.OKButton.Enabled = True 
    MsgBox "Some Fields are missing!" 
Else 
    Me.OKButton.Enabled = False 
End If 

End Sub 

Вы поместите этот код на Email Textbox Изменить событие.
И вам нужно будет поставить выше код во все ваше событие Textboxes Change.
Значение, каждый раз Textboxes Значение меняется, оно проверяет, пустыми ли другие Texboxes или нет.
Тест, который я выполнил, пуст, вы можете изменить его, если у вас есть определенные условия, которые вы хотите встретить.
Надеюсь, вам это поможет.

0

L42 дал хороший ответ на первую половину вашего вопроса, поэтому я не буду об этом говорить. Вы можете использовать лист защиты Excel, чтобы пользователи не могли редактировать ячейки, но это также предотвращает редактирование VBA-кода. Вы можете обойти это, защитив лист, а затем используя VBA, чтобы снять защиту непосредственно перед внесением изменений и впоследствии защитить его.

Sheet1.Unprotect Password:=yourPassword 

'Update the values you want here 

Sheet1.Protect Password:=yourPassword 

Если пользователи довольно здравого смысла, и вы обеспокоены их чтения кода и поиска пароля, вы можете защитить паролем код VBA. Чтобы защитить свой код, откройте книгу Excel и перейдите в Инструменты> Макро> Редактор Visual Basic (Alt + F11). Теперь из VBE перейдите в «Инструменты»> «Свойства VBAProject», затем перейдите на вкладку «Страница защиты», а затем установите флажок «Заблокировать проект из просмотра», а затем введите свой пароль и еще раз, чтобы подтвердить его. После этого вы должны сохранить, закрыть & снова открыть Рабочую книгу, чтобы защита вступила в силу.

Надеюсь, это поможет!

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