スプレッドシートの大きさを、表示する列や行の範囲に合わせて自動調整するには?
対象製品
El Tabelle for .NET
詳細
SPREAD(ActiveX)には、表示する列数や行数に合わせてスプレッドシートを最適な大きさに調節する AutoSize、VisibleCols、VisibleRows などの機能がありましたが、El Tabelle には同様の機能は備わっていません。
スプレッドシートの大きさを、表示する列や行の範囲に合わせて自動調整するには、次の関数を参考にコーディングを行ってください。
[Visual Basic]
[C#]
スプレッドシートの大きさを、表示する列や行の範囲に合わせて自動調整するには、次の関数を参考にコーディングを行ってください。
[Visual Basic]
Private Sub SheetAutoSize(ByRef TargetSheet As GrapeCity.Win.ElTabelle.Sheet, _
ByVal Columns As Integer, ByVal Rows As Integer)
Dim intHScrollBarHeight As Integer = TargetSheet.Parent.Size.Height - TargetSheet.Size.Height
Dim intVScrollBarWidth As Integer = TargetSheet.Parent.Size.Width - TargetSheet.Size.Width
Dim intColumnsWidth As Integer
Dim intRowHeight As Integer
Dim intStartColum As Integer = TargetSheet.TopLeft.Column
Dim intStartRow As Integer = TargetSheet.TopLeft.Row
Dim i As Integer
For i = intStartColum To Columns + intStartColum - 1
intColumnsWidth = intColumnsWidth + TargetSheet.Columns(i).Width
Next
For i = intStartRow To Rows + intStartRow - 1
intRowHeight = intRowHeight + TargetSheet.Rows(i).Height
Next
TargetSheet.Parent.Size = New Size(intColumnsWidth + intVScrollBarWidth + TargetSheet.RowHeaders.Width, _
intRowHeight + intHScrollBarHeight + TargetSheet.ColumnHeaders.Height)
End Sub
'呼び出し例
SheetAutoSize(Sheet1, 2, 3)
ByVal Columns As Integer, ByVal Rows As Integer)
Dim intHScrollBarHeight As Integer = TargetSheet.Parent.Size.Height - TargetSheet.Size.Height
Dim intVScrollBarWidth As Integer = TargetSheet.Parent.Size.Width - TargetSheet.Size.Width
Dim intColumnsWidth As Integer
Dim intRowHeight As Integer
Dim intStartColum As Integer = TargetSheet.TopLeft.Column
Dim intStartRow As Integer = TargetSheet.TopLeft.Row
Dim i As Integer
For i = intStartColum To Columns + intStartColum - 1
intColumnsWidth = intColumnsWidth + TargetSheet.Columns(i).Width
Next
For i = intStartRow To Rows + intStartRow - 1
intRowHeight = intRowHeight + TargetSheet.Rows(i).Height
Next
TargetSheet.Parent.Size = New Size(intColumnsWidth + intVScrollBarWidth + TargetSheet.RowHeaders.Width, _
intRowHeight + intHScrollBarHeight + TargetSheet.ColumnHeaders.Height)
End Sub
'呼び出し例
SheetAutoSize(Sheet1, 2, 3)
[C#]
private void SheetAutoSize(GrapeCity.Win.ElTabelle.Sheet TargetSheet,
int Columns, int Rows)
{
int intHScrollBarHeight = TargetSheet.Parent.Size.Height - TargetSheet.Size.Height;
int intVScrollBarWidth = TargetSheet.Parent.Size.Width - TargetSheet.Size.Width;
int intColumnsWidth = 0;
int intRowHeight = 0;
int intStartColum = TargetSheet.TopLeft.Column;
int intStartRow = TargetSheet.TopLeft.Row;
int i;
for(i = intStartColum;i <= Columns + intStartColum - 1;i++)
{
intColumnsWidth = intColumnsWidth + TargetSheet.Columns[i].Width;
}
for(i = intStartRow;i <= Rows + intStartRow - 1;i++)
{
intRowHeight = intRowHeight + TargetSheet.Rows[i].Height;
}
TargetSheet.Parent.Size = new Size(intColumnsWidth + intVScrollBarWidth + TargetSheet.RowHeaders.Width,
intRowHeight + intHScrollBarHeight + TargetSheet.ColumnHeaders.Height);
}
//呼び出し例
SheetAutoSize(sheet1, 2, 3);
int Columns, int Rows)
{
int intHScrollBarHeight = TargetSheet.Parent.Size.Height - TargetSheet.Size.Height;
int intVScrollBarWidth = TargetSheet.Parent.Size.Width - TargetSheet.Size.Width;
int intColumnsWidth = 0;
int intRowHeight = 0;
int intStartColum = TargetSheet.TopLeft.Column;
int intStartRow = TargetSheet.TopLeft.Row;
int i;
for(i = intStartColum;i <= Columns + intStartColum - 1;i++)
{
intColumnsWidth = intColumnsWidth + TargetSheet.Columns[i].Width;
}
for(i = intStartRow;i <= Rows + intStartRow - 1;i++)
{
intRowHeight = intRowHeight + TargetSheet.Rows[i].Height;
}
TargetSheet.Parent.Size = new Size(intColumnsWidth + intVScrollBarWidth + TargetSheet.RowHeaders.Width,
intRowHeight + intHScrollBarHeight + TargetSheet.ColumnHeaders.Height);
}
//呼び出し例
SheetAutoSize(sheet1, 2, 3);
キーワード
HowTo
この文書は、以前は次のFAQ IDで公開されていました : 3924