0

我有一个要通过 vba 脚本编辑的 excel 工作表,但我需要用户在脚本运行时不能编辑任何单元格或单击任何按钮。由于我在单击 excel 按钮后 Shell 的程序,在此 VBA 子运行期间启用了编辑。我需要的是一种以编程方式锁定所有单元格以进行编辑的方法,除了 VBA。我怎样才能做到这一点?

伪代码:

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.....
4

4 回答 4

4

您是否考虑禁用键盘输入。这可能是完成你需要的东西的蛮力方式,但这是一个想法。

您可以使用

Application.DataEntryMode = 

禁用键盘输入。脚本启动后将其设置为关闭,然后在脚本结束前将其重新打开。

同样,这可以被认为是蛮力,但只是一个想法。

希望有帮助。

于 2013-02-15T22:39:42.360 回答
3

当您使用用户窗体时,在窗体的“属性”对话框中将其设置为模态(按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
于 2013-02-19T13:39:02.693 回答
2

以下为我工作:

在开始时使用Application.Interactive = False并在结束时重新启用它。这将禁用用户单击/输入尝试,直到宏/用户表单/任何代码部分完成其操作。

于 2017-02-05T00:29:44.627 回答
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

我刚试过这个,它阻止了我编辑工作表,以防其他人尝试。

于 2016-07-07T15:06:18.777 回答