SSpread

Q1 12
特定のセルへカーソルが移動出来ないようにしたい

A1 12
カーソル位置の制御は、アクティブセルを移動したときに発生するLeaveCellイベントとアクティブセルを設定するSetActiveCellメソッドを組合わせて実装する事が可能です。

LeaveCellイベントでは、元のアクティブセルの位置と次のアクティブセルの位置を取得する事ができますので、イベント発生時、次のアクティブセルの位置や値を確認し、カーソルを当てたくないセルであれば、SetActiveCellメソッドで別のセルをアクティブセルとして設定します。

以下のサンプルプログラムでは、カーソルの移動先が2(B)か4(C)列目の場合1列右もしくは左のセルへアクティブセルを設定しています。

[サンプルコード]
 SSpread SSpread1 {
  X = 7;
  Y = 97;
  Width = 359;
  Height = 214;
  MaxCols = 5;
  
  Col = 2;
  Row = -1;
  BackColor = $FFCCCC;
  
  Col = 4;
  Row = -1;
  BackColor = $FFCCCC;
  
  Function OnLeaveCell(e) {
   
   /* 不正なセルへ移動した場合 */
   if (e.NewCol < 0 || e.NewRow < 0) {
    return;
   }
   /* カーソルの移動先が2(B)か4(C)列目の場合 */
   if (e.NewCol == 2 ||  e.NewCol == 4) {
    if(e.NewCol < e.Col){
     /* カーソルが左側へ移動している場合 */
     SetActiveCell(e.NewCol - 1, e.NewRow);
    }else{
     /* カーソルが右側へ移動している場合 */
     SetActiveCell(e.NewCol + 1, e.NewRow);
    }
   }
  }
 }

LeaveCellイベントは、マウスやキーボードの操作(キー押下によるセルの移動)でアクティブセルを移動した場合に発生します。SetActiveCellメソッドを利用したスクリプト操作でアクティブセルの設定(移動)した場合は発生しません。

実際の挙動については、CRSファイル形式のサンプル
  「特定のセルへカーソルが移動出来ないようにしたい(Sspd50_012.zip)」
をご確認ください。

管理番号:Sspd50_012
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser V・Biz/Designer V TIPS集 トップへ