| すぐマク YNxv998 | Home | Search | Contents | Gallery | Introduction | Service | Support | What's New! |
| クリップボードを経由せずに値だけをコピー貼り付けしたいが?(2) |
|
|
|||
|
ご愛読いただきまして、ありがとうございます。 [A1] は 「セルの内容をクリップボードを非経由ですべてコピーする」 と題して、3とおりのコードを紹介しています。 その1番目のアクティブシート内の場合は、下記のとおりです。
コピーセル範囲 = "A2:A12" '""内は例(以下同じ)
貼付セル範囲 = "B2"
Range(コピーセル範囲).Copy Range(貼付セル範囲)
結論からご説明しますと、数式を含めないで値だけをコピー貼り付けしたい場合は、P.080 [B1]の 「セル範囲を指定してコピーする」 と、 P.082 [C1]の 「クリップボードの内容をセルへ貼り付けする」 を組み合わせれば実現できます。 例えば、アクティブシートのA1:A3セル範囲をB1セルへ貼り付ける場合は、 Range("A1:A3").Copy Range("B1").PasteSpecial Paste:=xlPasteValues となります。 あるいは、コピーではありませんが、下記コードで実現できる場合がありますから、お試しください。 Range("B1:B3").Value = Range("A1:A3").Value 左辺がコピー先、右辺がコピー元に相当します。 【参考】 P.077[A1]のマクロはタイトルにありますとおり、「・・・すべてコピーする」 ためのCopyメソッドを利用しています。よって、当然ですが 「数式も含めてコピーされる」 ことになります。 Excelは通常、コピー先はクリップボードになります(注)が、Copyメソッドの引数Destinationにセル範囲を指定して実行すると、クリップボードを経由しないで直接コピーされます。 (注)Excelのハンド操作でセル範囲をコピーする場合、一旦、クリップボードへコピーし、改めて別のセルを選択して貼り付けるという、2ステップを要します。 このときコピーされるのは「すべて」であり、貼り付ける時に何をどう貼り付けるかを選択します。「コピー」するときには選択できません。 Copyメソッドの引数Destinationにセル範囲を指定すると 1ステップで行われますが、何をどうするかは指定できません。 よって、Excel流の言い方をすると、「値のみコピー」はなくて「値のみ貼り付け」になろうかと思います。 |
| クリップボードを経由せずに値だけをコピー貼り付けしたいが?(1) |
|
|||||
500連発(第1弾)マクロ番号 316の「クリップボードを経由せずにコピーして全て貼り付ける」についてお尋ねします。クリップボードを経由しないで、コピーして値だけ(数式だけ、書式だけ等)を貼り付ける方法があれば教えてください。 Excel2000を使用しています。 |
|
|||
掲載されたマクロを簡単に書くと、下記のとおりです。
'-----------------------------------------------------------------------------------------
Sub クリップボードを経由せずにコピー貼り付けする()
Worksheets("SSS").Range("A1:C3").Copy Destination:=Worksheets("SS2").Range("A4")
End Sub
'-----------------------------------------------------------------------------------------
このマクロは、"SSS"シートのA1:C3セル範囲の内容を、同一ブック内の "SS2"シートのA4セルを左上端として、コピーします。Copyメソッドは通常、Destination引数を省略して使用するので、コピー先がクリップボードになります。 しかし、Destination引数にコピー先のセル範囲を設定すると、クリップボードを経由しないで、直接そこへコピーされます。つまり、「コピー」という動作はあるが、「(クリップボードの内容を)貼り付ける」という動作がありません。 よって、Copyメソッドを利用して値だけ、数式だけ、書式だけをコピー先のセル範囲へ直接 コピー するためには、Destination引数のほかに、もう一つ引数が必要ということになるのでしょうが、Excel2002でも、そういう引数は存在しないので、できないかと思います。 値だけ、数式だけ、書式だけに限定して貼り付けるには、オーソドックに PasteSpecialメソッドの引数Pasteを設定して、クリップボード経由で行うことになるでしょう。 |
| http://www.geocities.jp/happy_ngi/ | Home | Contents | Gallery | Introduction | Service | Support | What's New! |