0

Excelでセルをダブルクリックするとどうなりますか?

この場合、ユーザーはセルをダブルクリックしない限り、セルに何かを入力することはできません.

次のコードを使用して、ダブルクリックせずにアクティブシートがデータを入力できないように保護しました。

myActiveWorksheet.Protect("password", Type.Missing, true, true, Type.Missing, true,
 Type.Missing,
 Type.Missing,
 Type.Missing,
 Type.Missing,
 Type.Missing,
 Type.Missing,
 Type.Missing,
 false, false, true);

それは正常に動作し、まさに私が望むことを行います。

しかし、ユーザーがセルをダブルクリックしたときに問題が発生します。ActiveWorkbook の SheetBeforeDoubleClick イベント ハンドラに次のコードを記述して、シートの保護を解除し、ユーザーがセルにデータを入力できるようにしました。

myActiveWorksheet.Unprotect("password");
target.Locked = false;

また、SheetChange イベント ハンドラー内の以下のコードを使用して、再度保護します。

target.Locked = true;
myActiveWorksheet.Protect("password", Type.Missing, true, true, Type.Missing, true,
    Type.Missing,
    Type.Missing,
    Type.Missing,
    Type.Missing,
    Type.Missing,
    Type.Missing,
    Type.Missing,
    false, false, true);

ただし、2 番目の保護コード (SheetChange イベント ハンドラー内のもの) は正常に機能しないため、ユーザーは各セルを 1 回クリックするだけで入力できます。

理由については、次の 2 つの推測があります。

1)シートが保護されない原因となるExcelでのダブルクリックプロセスで何かが起こります。

2)SheetChange イベント ハンドラのターゲット パラメータが、変更されたセルを指していません。

4

1 に答える 1

1

エイヴァル...

私は自分の解決策を見つけました。私は使用する必要があります

myActiveWorksheet.Cells.Locked = true;

それ以外の

target.Locked = true;

SheetChange イベント ハンドラーで。

于 2013-03-02T10:37:10.773 に答える