SSpread

Q1 18
SSpreadの最下段に固定表示の合計行を表示させたい  
[内容]
SSpreadで作成した表の最下段を小計または、合計行としてスクロールさせずに固定表示するにはどうすれば良いか。
A1 18
SSpreadで作成した表の最下段を小計または、合計行としてスクロールさせずに固定表示する方法としては2つのSSpreadを組み合わせて、1つのSSpreadのように表示する方法が考えられます。

以下のサンプルコードでは、通常のSSpreadとは別に合計表示用のSSpreadを配置し、そちらへ合計の値を表示させる事で、固定された合計行の表示を実現しています。

[サンプルコード]
SSpread SSpread1 {
  X = 19;
  Y = 167;
  Width = 432;
  Height = 161;
  
  /* 列の総数を設定 */
  MaxRows = 16;
  /* 行の総数を設定 */
  MaxCols = 5;
  /* 行ヘッダの列幅指定 */
  ColWidth(0) = 90;
  /* セルの各数式を自動再計算するよう設定 */
  AutoCalc = $TRUE;    
  /* 数式のセル参照スタイルをデフォルトのセル参照へ設定 */
  SetRefStyle($RefStyleDefault);
  /* 垂直スクロールバーのみ表示する */
  ScrollBars = $ScrollBarsVertical;
  
  /* スプレッドシート全体のセルタイプを数値型へ設定*/
  col = -1;
  row = -1;
  CellType = $CellTypeNumber;
  /* 数値型セルで、小数点以下の表示桁数を設定 */
  TypeNumberDecplaces = 0;
  /* Enterキーを押したとき、アクティブセルを下のセルに移動 */
  EditEnterAction = $EditEnterActionDown;
  /* セル周囲の罫線の色および線種を設定 */
  SetCellBorder( 0, 0, 5, 15, $CellBorderIndexBottom, $Black,
                                                $CellBorderStyleSolid);
  SetCellBorder( 0, 0, 5, 15, $CellBorderIndexRight,$Black, 
                                                $CellBorderStyleSolid);
  
  /* 列ヘッダの設定 */
  BlockMode = $TRUE;
  col = 1;
  Row = 0;
  col2 = 5;
  Row2 = 0;
  /* セルタイプを文字型へ設定*/
  CellType = $CellTypeEdit;
  BgColor = $FFFFCC;
  TypeHAlign = $TypeHAlignCenter;
  BlockMode = $FALSE;
  
  /* 列ヘッダに値をセット */
  Row = 0;
  for(var i = 0; i < ^.col_h.columns; i ++ ){
    Col =  i + 1;
    Value = ^.col_h.getCell( 0 , i ); 
  }
  
  /* 行ヘッダの設定 */
  BlockMode = $TRUE;
  col = 0;
  Row = 1;
  col2 = 0;
  Row2 = 16;
  /* セルタイプを文字型へ設定*/
  CellType = $CellTypeEdit;
  BgColor = $FFCCCC;
  BlockMode = $FALSE;
  
  /* 行ヘッダに値をセット */
  Col = 0;
  for(var i = 0; i < ^.row_h.rows; i ++ ){
    Row =  i + 1;
    Value = ^.row_h.getCell( i , 0 ); 
  }
  
  /* 最下段の行(16行目)、合計欄を非表示にする */
  RowHeight(16) = 0;

  /* sum関数を使用して合計を算出する */
  for(var i = 1; i <= MaxCols; i++){
    Col = i;
    row = 16;
    Formula = "sum(#1:#15)";
    BackColor = $FFFFCC;
  }
  
  /* 合計値をSSpread2へ表示させる */
  Function OnEditModeOff( e ) {
    for(var i2 = 1; i2 <= ^.SSpread2.MaxCols; i2 ++ ){
      ^.SSpread2.Col = i2;
      ^.SSpread2.row = 1;
      ^.SSpread1.Col = i2;
      ^.SSpread1.row = 16;
      ^.SSpread2.Value =^.SSpread1.Value;
    }
  }
}

/* 合計行用のSSpread */
SSpread SSpread2 {
  X = 19;
  Y = 327;
  Width = 432;
  Height = 21;
  
  /* 列の総数を設定 */
  MaxRows = 1;
  /* 行の総数を設定 */
  MaxCols = 5;
  /* 行ヘッダの列幅指定 */
  ColWidth(0) = 90;
  RowHeight(-1) = 20;
  
  /* 列ヘッダを非表示にする */
  ColHeadersShow = $FALSE;
  /* スクロールバーを非表示にする */
  ScrollBars = $ScrollBarsNone;
  /* セルの各数式を自動再計算するよう設定 */
  AutoCalc = $TRUE;    
  
  /* スプレッドシート全体のセルタイプを数値型へ設定*/
  col = -1;
  row = -1;
  /* セルの値の入力や変更を不可に設定 */
  Lock = $TRUE;
  BgColor = $99FFFF;
  CellType = $CellTypeNumber;
  /* 数値型セルで、小数点以下の表示桁数を設定 */
  TypeNumberDecplaces = 0;
  
  /* セル周囲の罫線の色および線種を設定 */
  SetCellBorder( 0, 0, 5, 1, $CellBorderIndexBottom,$Black,
                                             $CellBorderStyleSolid);
  SetCellBorder( 0, 0, 5, 1, $CellBorderIndexRight,$Black,
                                             $CellBorderStyleSolid);
  
  /* 列ヘッダの設定 */
  col = 0;
  row = 1;
  CellType = $CellTypeEdit;
  Value = "合計";
  BgColor = $99FFFF;
  TypeHAlign = $TypeHAlignCenter;
  TypeVAlign = $TypeVAlignCenter;
}
  ※上記、SetCellBorderメソッド処理部分を実際に記述する場合は一行で記述してください。

CRSファイル形式のサンプル
  「SSpreadの最下段に固定表示の合計行を表示させたい(Sspd50_018.zip)
で実際の動作をご確認いただけます。

【 補足 】
スプレッドシートの指定の列や行をスクロールさせずに、固定表示するプロパティとして、以下2つのプロパティが存在します。

  ・ ColsFrozenプロパティ
  ・ RowsFrozenプロパティ

上記は、1列目または、1行目から指定の列までを固定表示するプロパティですので最終列や最終行だけ固定するといった場合には利用できませんが、1列目または、1行目から指定の列までを固定表示場合にはこちらのプロパティをご利用ください。

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