コピー先シートの行位置が、コピー元シートの最大行数を越えるとき、エラーが発生する
対象製品
El Tabelle for .NET 3.0J
発生環境
この現象は、次のファイルバージョンのアセンブリで発生します。
v3.1.2005.1208 および以前のアセンブリ
v3.1.2005.1208 および以前のアセンブリ
状況
修正済み
詳細
Sheet.Copy メソッドでシートからシートにセルのコピーを行うとき、コピー先のセルの行位置がコピー元のシートの最大行数の範囲外であるとエラーが発生します。
例えば WorkBook に Sheet1、Sheet2 が存在するとき、次のようなコードを実行すると現象が発生します。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Sheet1.MaxRows = 1
Sheet2.MaxRows = 2
Sheet1(0, 0).Text = "ABC"
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Sheet2.Copy(Sheet1, New GrapeCity.Win.ElTabelle.Range(0, 0, 0, 0), _
New GrapeCity.Win.ElTabelle.Position(0, 1), GrapeCity.Win.ElTabelle.DataTransferMode.All)
End Sub
この現象の対象は行位置の場合だけで、列位置が不一致の場合はエラーが発生しません。
例えば WorkBook に Sheet1、Sheet2 が存在するとき、次のようなコードを実行すると現象が発生します。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Sheet1.MaxRows = 1
Sheet2.MaxRows = 2
Sheet1(0, 0).Text = "ABC"
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Sheet2.Copy(Sheet1, New GrapeCity.Win.ElTabelle.Range(0, 0, 0, 0), _
New GrapeCity.Win.ElTabelle.Position(0, 1), GrapeCity.Win.ElTabelle.DataTransferMode.All)
End Sub
この現象の対象は行位置の場合だけで、列位置が不一致の場合はエラーが発生しません。
回避方法
この現象はファイル バージョン v3.1.2006.0127 以降のアセンブリで修正されています。
修正版は こちら からダウンロードできます。
また、次の操作を行うことで現象を回避できます。
Sheet.Copy メソッド実行前に、コピー元 Sheet1 の Sheet.MaxRows プロパティを一旦コピー先 Sheet2 の貼り付け位置まで増やし、Sheet.Copy メソッド実行後にSheet1 の Sheet.MaxRows プロパティを元に戻します。
修正版は こちら からダウンロードできます。
また、次の操作を行うことで現象を回避できます。
Sheet.Copy メソッド実行前に、コピー元 Sheet1 の Sheet.MaxRows プロパティを一旦コピー先 Sheet2 の貼り付け位置まで増やし、Sheet.Copy メソッド実行後にSheet1 の Sheet.MaxRows プロパティを元に戻します。
キーワード
ELTB05169
この文書は、以前は次のバグレポートIDで公開されていました : 5867