我已经为工作目的创建了这个投资者邮件列表,并且需要添加更多功能:
我需要“锁定”输入框,这意味着您必须填写所有选项,否则将出现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 :(得分:0)
以下是您在按下“确定”按钮之前强行填写所有字段的方法:
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
是否为空
我做的测试是空的,如果你有一些你想要满足的条件,你可以修改它
希望这能让你开始。
答案 1 :(得分:0)
L42对你问题的前半部分给出了一个很好的答案,所以我不会解决这个问题。您可以使用Excel的保护表来阻止用户编辑单元格,但这也会阻止您的VBA代码编辑单元格。您可以通过保护工作表然后使用VBA在进行更改之前取消保护它并在之后再次保护它来解决此问题。
Sheet1.Unprotect Password:=yourPassword
'Update the values you want here
Sheet1.Protect Password:=yourPassword
如果您的用户非常精明并且您担心他们阅读您的代码并找到密码,您可以使用密码来保护VBA代码。要保护您的代码,请打开Excel工作簿,然后转到工具&gt;宏&gt; Visual Basic编辑器(Alt + F11)。现在,从VBE中转到Tools&gt; VBAProject Properties,然后单击Protection页面选项卡,然后选中“Lock project from viewing”,然后输入您的密码并再次确认。完成此操作后,您必须保存,关闭&amp;重新打开工作簿以使保护生效。
希望这有帮助!