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 イベント ハンドラのターゲット パラメータが、変更されたセルを指していません。