数式を使った検証設定が正常に動作しない場合がある
対象製品
SpreadJS(Ver.10.x.x -)
状況
回避方法あり
詳細
Spread.Sheetsの検証設定に以下の数式を設定し書式設定として"@"を指定すると、検証が正常に機能しない現象が発生します。
【再現手順】
1. Spread.Sheets の FormulaValidator に以下の数式を設定します
IF(ISNUMBER(0+INDIRECT(ADDRESS(ROW(), COLUMN()))), AND(VALUE(INDIRECT(ADDRESS(ROW(), COLUMN()))) < 100, TRUNC(VALUE(INDIRECT(ADDRESS(ROW(), COLUMN()))), 6) = VALUE(INDIRECT(ADDRESS(ROW(), COLUMN()))) ), INDIRECT(ADDRESS(ROW(), COLUMN()))="任意の列名")
上記数式の機能は以下のとおりです
・数値入力を制限 - 整数2ケタ以下、小数第6位まで入力可能
・文字「任意の列名」は入力可能
2. 任意のセルに上記のFormulaValidatorを設定します。
3. 2.セルに書式設定として"@"を設定します。
4. 2.セルに数値「01234567.012345」を入力します
【動作結果】
整数2ケタ以下、文字「任意の列名」は入力可能の条件で検証が機能するものの、小数第6位まで入力については検証が機能しない現象が発生します。上記【再現手順】の例では、本来入力可能であるべき「01234567.012345」が入力できない現象が発生します。
【再現手順】
1. Spread.Sheets の FormulaValidator に以下の数式を設定します
IF(ISNUMBER(0+INDIRECT(ADDRESS(ROW(), COLUMN()))), AND(VALUE(INDIRECT(ADDRESS(ROW(), COLUMN()))) < 100, TRUNC(VALUE(INDIRECT(ADDRESS(ROW(), COLUMN()))), 6) = VALUE(INDIRECT(ADDRESS(ROW(), COLUMN()))) ), INDIRECT(ADDRESS(ROW(), COLUMN()))="任意の列名")
上記数式の機能は以下のとおりです
・数値入力を制限 - 整数2ケタ以下、小数第6位まで入力可能
・文字「任意の列名」は入力可能
2. 任意のセルに上記のFormulaValidatorを設定します。
3. 2.セルに書式設定として"@"を設定します。
4. 2.セルに数値「01234567.012345」を入力します
【動作結果】
整数2ケタ以下、文字「任意の列名」は入力可能の条件で検証が機能するものの、小数第6位まで入力については検証が機能しない現象が発生します。上記【再現手順】の例では、本来入力可能であるべき「01234567.012345」が入力できない現象が発生します。
回避方法
本現象を完全に回避する方法はありませんが、セルの書式設定"@"を削除することで、検証機能を正常に動作させることが可能です。