MESCIUS SPREAD for Windows Forms 17.0J > 開発者ガイド > スタイル > セルの条件付き書式 > 旧形式の条件付き書式 |
SPREAD for Windows Forms 7.0J以降では新しい形式の「ルールによる条件付き書式」の機能が追加されました。新しい形式の条件付き書式は新しいクラス構造から成り立っており、SPREAD for Windows Forms 5.0J以前の旧形式の条件付き書式と互換性(関連)はありません。
SPREAD for Windows Forms 7.0J以降のバージョンで新規に条件付き書式を使用する場合は、新しい形式の「ルールによる条件付き書式」の利用をお勧めします。既存アプリケーションにおいて、すでにSPREAD for Windows Forms 5.0J以前の旧形式の条件付き書式を利用している場合は、継続して旧形式の条件付き書式を利用することをお勧めします。
本トピックに記載されている条件付き書式の機能は後方互換性を維持する目的で残されている旧形式の条件付き書式です。SPREAD for Windows Forms 7.0J以降でも問題なく動作しますが、古い形式として扱われす。
次の図は、コーディング時の表示例です。
セル内に条件付き書式を設定して、条件付きステートメントの結果に応じてセルの書式を決定することができます。 条件付きステートメントが有効だった場合、つまり処理結果が条件を満たした場合に、名前付きスタイルを使用してさまざまな書式(罫線、色など)を適用できます。
たとえば、セル値に基づきセルの背景色を変更するとします。 セル値が100未満の場合は、背景色を赤に変更します。 この場合の条件付きステートメントは「less than 100」であり、比較演算子は「less than」、条件(この場合は単一の定数)は100です。条件には、定数(文字列として表現)または式を使用できます。条件付きステートメントが、2つの条件と1つの演算子から成る場合もあります。たとえば、セル値が0〜100の場合に背景色を変更するとします。この場合の比較演算子はbetweenであり、1つ目の条件は2、2つ目の条件は100となります。演算の種類の一覧については、ComparisonOperator 列挙体を参照してください。式の種類の一覧については、CalcEngine.Expressionオブジェクトを参照してください。有効なスタイル設定の詳細については、「名前付きスタイル」を参照してください。
条件付き書式の設定には、ConditionalFormat クラス、および SheetView クラスの以下のメンバを使用します。
GetConditionalFormatsメソッドを使用すると、条件、演算子、およびスタイル情報がConditionalFormatオブジェクトとして返されます。最初の条件には、文字列または式を使用できます(FirstConditionまたはFirstConditionExpression)。同様に、最後の条件にも文字列または式を使用できます(LastConditionまたはLastConditionExpression)。条件を1つしか設定しない場合はFirstConditionを使用し、LastConditionはNULL値とします。 ComparisonOperatorは、条件付き書式の比較演算子です。条件付きステートメントが適合する場合にセルに適用されるスタイル設定は、NamedStyleオブジェクトとして設定されます。
次の図は、セル範囲に対して条件付き書式を設定し、その結果のセル値に基づき背景色を変える例を示します。
標準型セルなど、複数のデータ型を入力可能ないくつかのセル型では、入力値が数値であっても文字列であっても、条件付き書式は適切に機能します。たとえば、「10〜20」および「20〜30」といった複数の範囲内の値に対して条件付き書式を設定した場合、「16」と入力すると、範囲「10〜20」に該当する書式が適用されます。「16m」と入力すると、この入力値は文字列として扱われます。「16m」は文字列「10」〜「20」の範囲内に含まれるため、この場合も同じ条件付き書式が適用されます。
SetFormulaConditionalFormatは現在は使用されない古いメソッドであり、後方互換性を維持する目的でインタフェースに残されています。 通常、すべての処理は SetConditionalFormat メソッドで行えます。
また、IConditionalFormatSupport インタフェースの以下のメンバも使用できます。
条件付き書式のみを消去し、セルのその他の書式やセル データは変更せずに残しておくには、ClearConditionalFormats メソッドを使用します。
スタイル モデル内の行にスタイル設定が含まれているかどうかを調べるには、Model.DefaultSheetStyleModel.ConditionalFormatIsRowUsed メソッドを使用します。
モデルの行内で、空白ではない次の列のインデックスを返すには、Model.DefaultSheetStyleModel.ConditionalFormatNextNonEmptyColumnInRow メソッドを使用します。モデル内の指定の行および列のセルに対し、有効な1番目の条件を表すスタイル情報を取得するには、Model.DefaultSheetStyleModel.GetValidConditionalFormat メソッドを使用します。
スタイルを定義して、セルに条件付き書式を設定します。
次のサンプル コードは、セルに、数値データに基づく条件付き書式を設定します。 温度値に応じて、セルの色を変更します。 この動作を確認するには、セル B2 に数値を入力してから別のセルに移動するか、または編集モードを終了して、書式がどのように適用されるかを確認してください。
C# |
コードのコピー
|
---|---|
FarPoint.Win.Spread.NamedStyle styleCold = new FarPoint.Win.Spread.NamedStyle(); FarPoint.Win.Spread.NamedStyle styleCool = new FarPoint.Win.Spread.NamedStyle(); FarPoint.Win.Spread.NamedStyle styleMild = new FarPoint.Win.Spread.NamedStyle(); FarPoint.Win.Spread.NamedStyle styleWarm = new FarPoint.Win.Spread.NamedStyle(); FarPoint.Win.Spread.NamedStyle styleHot = new FarPoint.Win.Spread.NamedStyle(); styleCold.BackColor = Color.Blue; styleCold.ForeColor = Color.White; styleCool.BackColor = Color.Cyan; styleMild.BackColor = Color.Lime; styleWarm.BackColor = Color.Yellow; styleHot.BackColor = Color.Red; for (int col = 0; col < 6; col++) { fpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleCold, FarPoint.Win.Spread.ComparisonOperator.LessThanOrEqualTo, "32"); fpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleCool, FarPoint.Win.Spread.ComparisonOperator.Between, "32", "55"); fpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleMild, FarPoint.Win.Spread.ComparisonOperator.Between, "55", "75"); fpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleWarm, FarPoint.Win.Spread.ComparisonOperator.Between, "75", "85"); fpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleHot, FarPoint.Win.Spread.ComparisonOperator.GreaterThan, "85"); } |
Visual Basic |
コードのコピー
|
---|---|
Dim styleCold As New FarPoint.Win.Spread.NamedStyle() Dim styleCool As New FarPoint.Win.Spread.NamedStyle() Dim styleMild As New FarPoint.Win.Spread.NamedStyle() Dim styleWarm As New FarPoint.Win.Spread.NamedStyle() Dim styleHot As New FarPoint.Win.Spread.NamedStyle() styleCold.BackColor = Color.Blue styleCold.ForeColor = Color.White styleCool.BackColor = Color.Cyan styleMild.BackColor = Color.Lime styleWarm.BackColor = Color.Yellow styleHot.BackColor = Color.Red For col As Integer = 0 To 5 FpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleCold, FarPoint.Win.Spread.ComparisonOperator.LessThanOrEqualTo, "32") FpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleCool, FarPoint.Win.Spread.ComparisonOperator.Between, "32", "55") FpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleMild, FarPoint.Win.Spread.ComparisonOperator.Between, "55", "75") FpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleWarm, FarPoint.Win.Spread.ComparisonOperator.Between, "75", "85") FpSpread1.ActiveSheet.SetConditionalFormat(0, col, styleHot, FarPoint.Win.Spread.ComparisonOperator.GreaterThan, "85") Next col |