2014-01-07 98 views
0

我已經創建工作的目的本投資者郵件列表,需要添加一些更多的功能:VBA的輸入框擅長

我需要「鎖定」的輸入框,這意味着你必須否則填寫所有選項msgbox會發生「請填寫所有選項」。

我還需要鎖定整個電子表格 - 所以只能通過輸入框將投資者添加到郵件列表中。它應該只可能沒有輸入框通過管理員

我已經搜索所有在互聯網上新增投資者,並不能找到這樣的功能

幫助深表感謝!

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'更改事件中添加一個嵌套的if,以檢查值是否存在。要鎖定工作表,您可以在'Workbooks'open事件中執行此操作,以保護'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更改事件中。
含義,每當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屬性,然後單擊保護頁面選項卡,然後選中「查看鎖定項目」,然後輸入密碼並再次確認。完成此操作後,您必須保存,關閉&重新打開工作簿以使保護生效。

希望這會有所幫助!