セルをダブルクリックして編集できないようにする、C# で Excel XP 用の COM アドインを作成しようとしています。
この方法でセルを編集することは禁止されているというボックスをポップアップして、すべての実行を停止したいと考えています。
Microsoft のドキュメントを見ると、これは非常に簡単な作業のように思えますAppEvents_SheetBeforeDoubleClickEventHandler
。シグネチャを使用して Application イベントを作成し、実行を停止するように truefunc(object sheet, Range Target, ref bool Cancel)
に設定します。Cancel
私は次のものを持っています:
public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom)
{
Excel.Application app = application as Excel.Application;
app.SheetBeforeDoubleClick += Excel.AppEvents_SheetBeforeDoubleClickEventHandler(beforeDoubleClick);
}
void beforeDoubleClick(object sheet, Excel.Range Target, ref bool Cancel)
{
MessageBox.Show("Cannot edit cells this way sorry.");
Cancel = true;
}
メッセージボックスが表示されますが、セルは編集モードになりますが、VBA から同じものがあれば機能します。
次のコードを使用する VB.NET アドインでも同じことが起こります。
Private WithEvents app As Excel.Application
Public Sub OnConnection(ByVal application As Object,
ByVal connectMode As Extensibility.ext_ConnectMode,
ByVal addInInst As Object,
ByRef custom As System.Array)
Implements Extensibility.IDTExtensibility2.OnConnection
app = application
End Sub
Sub Worksheet1_BeforeDoubleClick(ByVal obj As Object,
ByVal Target As Excel.Range,
ByRef Cancel As Boolean)
Handles app.SheetBeforeDoubleClick
MsgBox("Double-clicking in this sheet is not allowed.")
Cancel = True
End Sub