[ELTB05684]クリップボード操作がシートの表示モードに依存する

文書番号 : 22536     文書種別 : 制限事項     最終更新日 : 2006/09/08
文書を印刷する
対象製品
El Tabelle for .NET 3.0J
発生環境
動作保証環境と同じ
詳細
Sheet.ViewMode プロパティを Row または Column に設定しているとき、Excel でコピーしたセルまたはセル範囲を Sheet に貼り付けることができません。
Excel で行全体や列全体を選択しコピーした場合は、Sheet に貼り付けることができます。
回避方法
この現象は、製品の仕様によるものです。クリップボード操作は ViewMode プロパティの設定に依存します。たとえば、ViewMode プロパティを列単位に設定したとき、クリップボード操作も列単位で行う必要があります。

この制限を回避するには、クリップボード操作が行われる直前に Sheet.ViewMode プロパティを切り替えます。

[Visual Basic]
Private Sub Form1_Load(ByVal sender As Object, _
  ByVal e As System.EventArgs) Handles Form1.Load
  Sheet1.ViewMode = GrapeCity.Win.ElTabelle.ViewMode.Row
  Sheet1.AllowClipboard = True
End Sub

Private Sub Sheet1_KeyDown(ByVal sender As Object, _
  ByVal e As System.Windows.Forms.KeyEventArgs) Handles Sheet1.KeyDown
  Dim objSheet As GrapeCity.Win.ElTabelle.Sheet = _
    CType(sender, GrapeCity.Win.ElTabelle.Sheet)
  If e.Control = True Then
    If e.KeyCode = Keys.V Then
      objSheet.Redraw = False
      'Sheet 内でコピーが行われたときのために、
      'UIPaste メソッドを2回実行します。
      objSheet.UIPaste()
      objSheet.ViewMode = GrapeCity.Win.ElTabelle.ViewMode.Default
      objSheet.UIPaste()
      objSheet.ViewMode = GrapeCity.Win.ElTabelle.ViewMode.Row
      objSheet.Redraw = True
    End If
  End If
End Sub

[C#]
private void Form1_Load(object sender, EventArgs e)
{
  sheet1.ViewMode = GrapeCity.Win.ElTabelle.ViewMode.Row;
  sheet1.AllowClipboard = true;
}

private void sheet1_KeyDown(object sender, KeyEventArgs e)
{
  GrapeCity.Win.ElTabelle.Sheet objSheet =
    (GrapeCity.Win.ElTabelle.Sheet)sender;
  if(e.Control == true)
  {
    objSheet.Redraw = false;
    //Sheet 内でコピーが行われたときのために、
    //UIPaste メソッドを2回実行します。
    objSheet.UIPaste();
    objSheet.ViewMode = GrapeCity.Win.ElTabelle.ViewMode.Default;
    objSheet.UIPaste();
    objSheet.ViewMode = GrapeCity.Win.ElTabelle.ViewMode.Row;
    objSheet.Redraw = true;
  }
}

この文書は、以前は次のFAQ IDで公開されていました : 6380