• ベストアンサー

(VBA) バグ? それとも仕様???

こんにちは。 ●アクティブセルの次の行に一行追加し、そこにアクティブセルの行をコピーする ということで以下のコードを実行しました。 ------------------------------------------ Sub test()   ActiveCell.EntireRow.Copy   ActiveCell.Offset(1).EntireRow.Insert End Sub ------------------------------------------ なんとこのコードで結果はOKです。 で、タイトルの文言になります。 この動作が仕様でしたらそれが書いてあるサイトなど紹介お願いします。   (XP, Office2000)  

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

追伸: Wend02です。 >それは仕様ではありません。 Excel2000では、ということです。 上位バージョンでは、仕様?うーん、良く分りません。

taocat
質問者

お礼

Wendy02さん、早速の回答ありがとうございます。 懇切丁寧、かつ的を射たwendy02さんの回答は非常に勉強になりますので目に付けば必ず見るようにしています。 実はこの質問の切っ掛けはある質問へのWendy02さんの回答を見てのことなのです。(^^;; その質問とは数日前の「エクセルで行を追加するマクロ」。 そこに    .EntireRow.Copy 'コピー    .Offset(1).EntireRow.Insert xlDown    .EntireRow.Cells(1, 1).PasteSpecial こう回答されてました。 当方なら、行挿入、クリップボードを介さないCopy、とするところですのでちょと興味を惹かれ行挿入を色々試していたところ今回の現象に出くわし、こういった微妙な問題を質問すれば必ずやWendy02さんに回答いただけると踏んで。。。。(^^;; すみません前説が長くなりました。 InsertにXlInsertFormatOrigin クラスの引数が追加されたこと知りませんでした。2000しか使ってないので、それにVBAは趣味の範囲なので、とちょと言い訳(^^;;、 で、回答をもとに調べてみましたところ引数CopyOriginは上下左右の「書式」をコピーするもので、「値」まではコピーしない、故に書式だけではなく値もコピーされる今回の現象はちょっと「バグ」臭いのでは、と理解しましたが、どうでしょう。 何れにしろ、今回は、いえいえ今回「も」非常に勉強になりました。これからも色々ご教授お願いいたします。今回は貴重な時間を割いていただき感謝いたします。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。Wendy02です。 それは仕様ではありません。どちらかというと、開発者側が意図的に、次期バージョンのために残しておいた機能だと思います。 Excel 2000 では達成しませんでしたが、インサートメソッドは、もともと、コピー元を確保できるように構想していたのだろうと思います。 Range オブジェクトの Insert メソッド expression.Insert(Shift, CopyOrigin) なお、Excel 2000のワークシートでは、コピーをしておいて、行の挿入をしても、コピーしたものは挿入行には入らないはずです。

参考URL:
http://www.microsoft.com/japan/developer/library/vbaxl10/xlmthinsert.htm
  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

仕様でしょうね。おそらく。 たとえば普通に1行コピーした状態で行挿入しようとすると "挿入"ではなく"コピーしたセルの挿入"に変わってしまいます。 それと同じ事がVBAでも行われてしまうのでは?

taocat
質問者

お礼

o_chi_chiさん、早速の回答ありがとうございます。 >たとえば普通に1行コピーした状態で行挿入しようとすると >"挿入"ではなく"コピーしたセルの挿入"に変わってしまいます その場合、空行が挿入されるだけではありませんか? 何れにしろ間髪入れずの回答感謝します。 これからも宜しくお願いいたします。

関連するQ&A