INDIRECT関数との併用により、入力規則リストが正常に動作しない場合がある
対象製品
SpreadJS 9J
発生環境
SP1(9.20161.0)
状況
修正済み
詳細
入力規則リスト(GC.Spread.Sheets.DataValidation.createFormulaListValidator)でINDIRECT関数が設定されたセルを参照し、このINDIRECT関数がひとつのセルのみを参照するセル範囲(例:A1:A1など)であった場合に、入力規則リストが正常に動作しない現象が発生します。
【現象再現コード】
以下のコードによって、セル(0, 1)のリストが空になる現象が発生します
----------------------------------------
//初期化
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
var sheet = spread.getActiveSheet();
sheet.suspendPaint();
//セル名称の設定
spread.addCustomName("test", '=INDIRECT("Sheet1!$A$1:$A$1")');
//リストの設定
var validator = new GC.Spread.Sheets.DataValidation.createFormulaListValidator("=test");
//リスト値の設定
sheet.setValue(0,0, "A");
sheet.setDataValidator(0, 1, validator);
sheet.resumePaint();
----------------------------------------
【現象再現コード】
以下のコードによって、セル(0, 1)のリストが空になる現象が発生します
----------------------------------------
//初期化
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
var sheet = spread.getActiveSheet();
sheet.suspendPaint();
//セル名称の設定
spread.addCustomName("test", '=INDIRECT("Sheet1!$A$1:$A$1")');
//リストの設定
var validator = new GC.Spread.Sheets.DataValidation.createFormulaListValidator("=test");
//リスト値の設定
sheet.setValue(0,0, "A");
sheet.setDataValidator(0, 1, validator);
sheet.resumePaint();
----------------------------------------
回避方法
SpreadJS 9J SP2(Ver.9.20171.0)で修正済み