我有一个excel表,我想通过vba脚本编辑,但我需要用户在脚本运行时无法编辑任何单元格或单击任何按钮。由于在单击excel按钮后我运行的程序,在此VBA子运行期间启用了编辑。我需要的是一种程序化锁定所有单元格以进行编辑的方法,除了VBA。我怎么能这样做?
Psuedo_Code:
Shell _ "PROGRAM1"
Shell _ "PROGRAM2"
Dim shellobject As PROGRAM2
shellobject.Connect "PROGRAM1"
shellobject.dothings
if(shellobject.success) then
Cells(1,1).Value = "HUZZAH!"
Else
Cells(1,1).Value = "OH NO MR BILL!"
End If
shellobject.dootherthings
etc.....
答案 0 :(得分:4)
您是否考虑过禁用键盘输入?这可能是实现你所需要的一种蛮力方式,但这是一种思想。
您可以使用
Application.DataEntryMode =
禁用键盘输入。在脚本启动后将其设置为关闭,并在脚本结束之前将其重新打开。
同样,这可能被视为蛮力,但只是一个想法。
希望有所帮助。
答案 1 :(得分:4)
当您使用UserForm时,请在表单的“属性”对话框中将其设置为模态(如果不可见,请按 F4 ):
这样,除非关闭,否则用户无法在表单外部单击Excel。
此外,您可以尝试在执行期间禁用按钮。这段代码应该这样做:
Private Sub CommandButton1_Click()
SetButtonsEnabled False
Application.EnableEvents = False
'Your code here
SetButtonsEnabled
Application.EnableEvents = True
End Sub
Private Sub SetButtonsEnabled(Optional blnEnable As Boolean = True)
Dim btn As Control
For Each btn In Me.Controls
If TypeOf btn Is CommandButton Then btn.Enabled = blnEnable
Next
End Sub
答案 2 :(得分:1)
以下为我工作:
在开头使用Application.Interactive = False
并在结尾处重新启用它。这将禁用用户单击/输入尝试,直到Macro / Userform /任何代码部分完成其操作。
答案 3 :(得分:0)
我试图评论Steventnorris和Even-Steven,但我无法做到,所以只是在这里给出答案。
Application.DataEntryMode= xlOff in the beginning should be set to
Application.DataEntryMode= xlOn
and then at the end of the code
put in
Application.DataEntryMode= xlOff
我刚尝试了这个,它阻止我编辑工作表,以防万一其他人正在尝试。