PowerTools SPREAD for Windows Forms 8.0J > 開発者ガイド > セル型 > 編集可能なセル型 > 数値型セル |
数値型セルを使用すると、倍精度浮動小数点値、および分数の入力が可能になります。 数値型セルでは少数値、整数値、または分数を表示できます。 ここでは、数値型セルの書式と計算について説明します。
数値型セルとその各属性を設定するには、NumberCellTypeクラスを使用します。 通貨型セルとその各属性を設定するには、CurrencyCellTypeクラスを使用します。
数値は通常、倍精度データ型として計算および保存されます。このデータ型は、約15桁の精度を適用します。セルの書式は、任意の桁数を表示するように設定できます。たとえば次のコードは、セル範囲A1:A5の値を合計し、この結果をセルA6に表示します。セルA6の値は完全な精度(倍精度データ型の上限)を維持しますが、セルA6に表示されるテキストは、小数点以下1桁(小数第1位)になるように端数処理されます。
C# |
コードのコピー
|
---|---|
NumberCellType ct = new NumberCellType(); ct.DecimalPlaces = 1; spread.Sheets[0].Cells[5, 0].CellType = ct; spread.Sheets[0].Cells[5, 0].Formula = "SUM(A1:A5)"; |
Visual Basic |
コードのコピー
|
---|---|
Dim ct As New NumberCellType() ct.DecimalPlaces = 1 spread.Sheets(0).Cells(5, 0).CellType = ct spread.Sheets(0).Cells(5, 0).Formula = "SUM(A1:A5)" |
数値型セルは、有効数値として15桁の精度をサポートします。これは、整数部分と小数部分を含めた合計桁数です。たとえば、小数部分に10桁を使用する場合は、整数部分は5桁に限定されます。また、倍精度データ型で浮動小数点エラーが発生する可能性もあります。より大きな数値、または小数点以下の桁数がより大きな数値の精度を維持するには、通貨型セルの使用を検討してください。通貨型セルは10進数データ型を使用し、浮動小数点エラーが発生しにくいデータ型です。
数値型セルでは、整数または小数として数値を表示する方法をカスタマイズできます。これには、次の表に示すさまざまな書式機能を使用します。 各プロパティの使用例については、このページで後述します。
プロパティ | 説明 |
---|---|
DecimalPlaces | 少数値に対し、小数点以下の桁数を設定します。 |
DecimalSeparator | 少数値を表示するための小数点文字を設定します。 |
FixedPoint | 固定小数点で数値を表示するために、数値の小数部分にプレースホルダとしてゼロを表示するかどうかを設定します。 |
LeadingZero | 先行ゼロを表示するかどうかを設定します。 |
MaximumValue | ユーザーが入力可能な最大値を設定します。 |
MinimumValue | ユーザーが入力可能な最小値を設定します。 |
NegativeFormat | 負数の表示書式を設定します。 |
NegativeRed | 負の数値を赤色で表示するかどうかを設定します。 |
OverflowCharacter | 表示幅に収まらなかった値を置換する文字を設定します。 |
Separator | 数値の3桁区切りに使用する文字列を設定します。 |
ShowSeparator | 3桁区切りの文字列を表示するかどうかを設定します。 |
NumberCellTypeクラスのインスタンスを作成して、クラスの各プロパティを設定します。セルに設定する場合はCellクラスの、行に設定する場合はRowクラスの、列に設定する場合はColumnクラスの、あるいはスタイルに設定する場合はStyleInfoクラスのCellTypeプロパティに、定義したNumberCellTypeクラスのインスタンスを割り当てます。
次のサンプルコードは、セルを数値型セルに設定します。
C# |
コードのコピー
|
---|---|
FarPoint.Win.Spread.CellType.NumberCellType nmbrcell = new FarPoint.Win.Spread.CellType.NumberCellType(); nmbrcell.DecimalSeparator = ","; nmbrcell.DecimalPlaces = 5; nmbrcell.LeadingZero = FarPoint.Win.Spread.CellType.LeadingZero.UseRegional; nmbrcell.MaximumValue = 500.000; nmbrcell.MinimumValue = -10.000; fpSpread1.ActiveSheet.Cells[1, 1].CellType = nmbrcell; |
Visual Basic |
コードのコピー
|
---|---|
Dim nmbrcell As New FarPoint.Win.Spread.CellType.NumberCellType() nmbrcell.DecimalSeparator = "," nmbrcell.DecimalPlaces = 5 nmbrcell.LeadingZero = FarPoint.Win.Spread.CellType.LeadingZero.UseRegional nmbrcell.MaximumValue = 500.000 nmbrcell.MinimumValue = -10.000 FpSpread1.ActiveSheet.Cells(1, 1).CellType = nmbrcell |
数値型セルでは、数値を分数形式で表示できます。たとえば0.01を1/100と表示できます。値を分数形式で表示するには、NumberCellTypeクラスのFractionModeプロパティを設定します。これにより、セル内で数値を「0.01」と入力しても、直接「1/100」と入力しても、「1/100」と表示されます。分数の精度を設定するには、NumberCellTypeクラスのFractionDenominatorPrecisionプロパティを使用する(数値を1/2、1/4などの分数として表示)、またはFractionDenominatorDigitsプロパティを使用して分母の桁数(2桁、3桁、4桁、それ以上など)を指定します。次の表は、数値型セルの分数関連プロパティの一覧を示します。
プロパティ | 説明 |
---|---|
FractionMode | 数値を分数として表示するかどうかを設定します。 |
FractionConvertWholeNumbers | 数値を分数表示する場合に、整数も分数に変換するかどうかを設定します。 |
FractionCustomFormat | カスタム書式を使用して数値を分数表示する方法を設定します。 カスタム書式を使用するには、FractionDenominatorPrecisionを「Custom」に設定します。 |
FractionDenominatorDigits | 数値を分数表示する場合の桁数を設定します。 |
FractionDenominatorPrecision | 数値を分数表示する場合の精度を設定します。 |
FractionRenderOnly | 数値を分数表示する場合に、分数の編集モードを許可するかどうかを設定します。 |
分数表示を設定するもう1つの方法は、カスタム書式の値を設定することです(FractionCustomFormatプロパティを使用)。 デフォルト値は"# ???/???"であり、整数(#)の後に続けて3桁の分数(???/???)が表示されます。スラッシュの後の疑問符は、分母の精度を示す桁数です。これには1〜15の値を指定できます(有効な最大桁数が15であるため)。カスタム書式では、"# ???/100"または"# ??/64"のように分母を指定できます。 FractionConvertWholeNumberプロパティをTrueに設定すると、値は整数として表示されなくなるので、数値全体が分数として表示されます。
表示の位置揃えには、セルに設定されているすべての位置揃えプロパティが適用されます。 数値の位置揃えは、分数表示とは関係なく設定されます (後述のサンプルコードでは、分数部分が存在するかどうかに関わらず、数値が右揃えで表示される)。
NumberCellTypeクラスのインスタンスを作成して、FractionModeプロパティをTrueに設定します。セルに設定する場合はCellクラスの、行に設定する場合はRowクラスの、列に設定する場合はColumnクラスの、あるいはスタイルに設定する場合はStyleInfoクラスのCellTypeプロパティに、定義したNumberCellTypeクラスのインスタンスを割り当てます。
次のサンプルコードは、セル内の数値を分数として表示するように設定します。
C# |
コードのコピー
|
---|---|
fpSpread1.ActiveSheet.Columns[0, 9].Width = 120; FarPoint.Win.Spread.CellType.NumberCellType frac = new FarPoint.Win.Spread.CellType.NumberCellType(); frac.FractionMode = true; frac.FractionConvertWholeNumbers = false; frac.FractionDenominatorPrecision = FarPoint.Win.Spread.CellType.FractionDenominatorPrecision.Custom; frac.FractionCustomFormat = "## ???/???"; frac.FractionDenominatorDigits = 3; fpSpread1.ActiveSheet.Columns[0].CellType = frac; fpSpread1.ActiveSheet.Columns[1].CellType = frac; fpSpread1.ActiveSheet.Cells[0, 0].Value = 5.00; fpSpread1.ActiveSheet.Cells[1, 0].Value = 5.01; fpSpread1.ActiveSheet.Cells[2, 0].Value = 5.02; fpSpread1.ActiveSheet.Cells[3, 0].Value = 5.03; fpSpread1.ActiveSheet.Cells[4, 0].Value = 5.04; fpSpread1.ActiveSheet.Cells[5, 0].Value = 5.05; fpSpread1.ActiveSheet.Cells[6, 0].Value = 5.06; fpSpread1.ActiveSheet.Cells[7, 0].Value = 5.07; fpSpread1.ActiveSheet.Cells[8, 0].Value = 5.08; fpSpread1.ActiveSheet.Cells[9, 0].Value = 5.09; fpSpread1.ActiveSheet.Cells[0, 1].Value = 25.000; fpSpread1.ActiveSheet.Cells[1, 1].Value = 25.011; fpSpread1.ActiveSheet.Cells[2, 1].Value = 25.021; fpSpread1.ActiveSheet.Cells[3, 1].Value = 25.031; fpSpread1.ActiveSheet.Cells[4, 1].Value = 25.041; fpSpread1.ActiveSheet.Cells[5, 1].Value = 25.051; fpSpread1.ActiveSheet.Cells[6, 1].Value = 25.061; fpSpread1.ActiveSheet.Cells[7, 1].Value = 25.071; fpSpread1.ActiveSheet.Cells[8, 1].Value = 25.081; fpSpread1.ActiveSheet.Cells[9, 1].Value = 25.091; |
Visual Basic |
コードのコピー
|
---|---|
FpSpread1.ActiveSheet.Columns(0, 9).Width = 120 Dim frac As New FarPoint.Win.Spread.CellType.NumberCellType frac.FractionMode = True frac.FractionConvertWholeNumbers = False frac.FractionDenominatorPrecision = FarPoint.Win.Spread.CellType.FractionDenominatorPrecision.Custom frac.FractionCustomFormat = "# ???/???" frac.FractionDenominatorDigits = 3 FpSpread1.ActiveSheet.Columns(0).CellType = frac FpSpread1.ActiveSheet.Columns(1).CellType = frac FpSpread1.ActiveSheet.Cells(0, 0).CellType = frac FpSpread1.ActiveSheet.Cells(0, 0).Value = 5.00 FpSpread1.ActiveSheet.Cells(1, 0).Value = 5.01 FpSpread1.ActiveSheet.Cells(2, 0).Value = 5.02 FpSpread1.ActiveSheet.Cells(3, 0).Value = 5.03 FpSpread1.ActiveSheet.Cells(4, 0).Value = 5.04 FpSpread1.ActiveSheet.Cells(5, 0).Value = 5.05 FpSpread1.ActiveSheet.Cells(6, 0).Value = 5.06 FpSpread1.ActiveSheet.Cells(7, 0).Value = 5.07 FpSpread1.ActiveSheet.Cells(8, 0).Value = 5.08 FpSpread1.ActiveSheet.Cells(9, 0).Value = 5.09 FpSpread1.ActiveSheet.Cells(0, 1).Value = 25.000 FpSpread1.ActiveSheet.Cells(1, 1).Value = 25.011 FpSpread1.ActiveSheet.Cells(2, 1).Value = 25.021 FpSpread1.ActiveSheet.Cells(3, 1).Value = 25.031 FpSpread1.ActiveSheet.Cells(4, 1).Value = 25.041 FpSpread1.ActiveSheet.Cells(5, 1).Value = 25.051 FpSpread1.ActiveSheet.Cells(6, 1).Value = 25.061 FpSpread1.ActiveSheet.Cells(7, 1).Value = 25.071 FpSpread1.ActiveSheet.Cells(8, 1).Value = 25.081 FpSpread1.ActiveSheet.Cells(9, 1).Value = 25.091 |
このコードの結果は、SPREADでは次のように表示されます。
デフォルトでは、スピンボタンは表示されません。オプションとして、セルが編集モードに切り替わったときに、セルの隣にスピンボタンを表示させることができます。 NumberCellTypeクラスに属する、Spinで始まる各プロパティを使用すると、さまざまなスピン機能を設定できます。 詳細については、「スピンボタンの表示」を参照してください。
デフォルトでは、実行時に編集モードの数値型セルをダブルクリックすると、ポップアップ電卓が表示されます。 電卓の[OK]および[キャンセル]ボタンとして表示するテキストを指定できます。 詳細については、「ポップアップ電卓」を参照してください。 電卓がポップアップ表示されないようにするには、FpSpreadクラスのSubEditorOpeningイベントを捕捉し、イベント引数を表すSubEditorOpeningEventArgsクラスのCancelプロパティをTrueに設定し、処理をキャンセルします。