2011-08-01 14 views
1

いくつかの特定の細胞のユーザーによる改変を防ぐことはできますか? VSTOアドインを使用してExcelイベントにプラグインすることができます。特定の細胞の改変を防ぐ方法は?

+0

私はvsto Excelワークブックのためにそれを行う方法を知っています。私は答えとして投稿しますか?アドインとワークブックのコードは似ているはずです。 –

答えて

1

Worksheet.Change Eventをご覧ください。このイベントはRangeオブジェクトをとります。私が覚えている限り、このオブジェクトには、選択されたセルに関する情報が含まれています。そして、あなたが望むものなら何でもこのセルで行うことができますlink

1

私のアプローチは少し異なります。

私はシート全体を保護し、特定のセルや列や行をロック解除するので、ユーザーはそれらのシートの詳細を記入することができます。しかし、これで同じ結果が得られるはずです。

コードは、ユーザーがロックされたセルをクリックすると、エクセルのセルがロックされているという警告メッセージをスローし

private void ThisAddIn_Startup(object sender, System.EventArgs e) { var activesheet = (Excel.Worksheet)this.Application.ActiveSheet; // keep particular cell unlocked activesheet.get_Range("A1",missing).Locked = false; // keep entire row unlocked activesheet.get_Range("B2", missing).EntireRow.Locked = false; // keep entire column unlocked activesheet.get_Range("C1", missing).EntireColumn.Locked = false; // keep particular range (D4 - E8) unlocked activesheet.get_Range("D4","E8").Locked = false; activesheet.Protect(missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing); } 

VS 2008

上でテストされています。そのユーザーのための迷惑な。 displayalertsを無効にすることができます。

ただ単にvar activesheetを宣言する前にThisAddIn_Startup(object sender, System.EventArgs e)

this.Application.DisplayAlerts = false; 

を使用して、再度これは迷惑な警告メッセージの世話をする

private void ThisAddIn_Shutdown(object sender, System.EventArgs e) 
     { 
      this.Application.DisplayAlerts = true; 
     } 

を使用してそれを有効に忘れないでください。

関連する問題