0

vba スクリプトを使用して編集したい Excel シートがありますが、スクリプトの実行中にユーザーがセルを編集したり、ボタンをクリックしたりできないようにする必要があります。Excelボタンのクリック後にシェルするプログラムにより、この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 に答える