Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
selection.pasteはできない?
投稿日時: 21/04/17 13:11:40
投稿者: A太郎

初心者で恐縮です。
コピーペーストするとき、最後はselection.pasteにすればよいと思ったのですがエラーになりました。
selection.pasteは構文的に正しくないのでしょうか?ここをActivesheets.pasteにすれば出来るようですが、なぜcopyの時と違うのか違和感があります。
 
 
****************************
    Cells(1, 1).Select
    Selection.copy
    Cells(3, 3).Select
    Selection.Paste
 

回答
投稿日時: 21/04/17 14:08:09
投稿者: simple

>selection.pasteは構文的に正しくないのでしょうか?
はい、間違いです。
Selectionはその時、どこかのセル範囲でしょうから、
Rangeオブジェクトのはずですね。
RangeオブジェクトはPasteメソッドを持ちません、
つまり定義されていませんから、エラーになります。
 
オブジェクトが持つ、プロパティやメソッドは厳格に定義されていて、
オブジェクトに定義されていないものは、雰囲気で使えるものではないので、
きちんと確認する必要があります。
一度、ヘルプをよく確認して下さい。
 
>なぜcopyの時と違うのか違和感があります。
そうですね、そう受け止められるのも自然かもしれません。
ただ、そのように決められたものなので、それに沿って使うしかありません。
 
>Activesheets.pasteにすれば出来る
Activesheet.Pasteの入力ミスですね。
 
なお、テーマからはずれますが、私見では、
WorksheetのPasteメソッドは、Worksheetをアクティブにしないといけないことから、余り使わず、
Copy(Destination指定の)や、PasteSpesialメソッドを使うことの方が多いかもしれませんね。

回答
投稿日時: 21/04/17 15:41:05
投稿者: WinArrow
投稿者のウェブサイトに移動

質問に対する回答ではありません。
コピペの仕組みを覚えておくと今後役に立つかも
 
セル(範囲)の複写には、いろいろな目的に合わせた、貼付けがあります。
それから、考えておかなければいけないことして、
クリップボードがあります。
   
Range(○).Copy
   
を実行すると、、クリップボードに登録されます。
手操作だと選択範囲は点線で囲まれた状態。
Paste
を実行すると、クリップボードから、張り付きます。
しかい、この時点で、クリップボードが空になるわけではありません。
目視すると、選択範囲が点線で囲まれた状態のまま。
再度、Pasteを実行すると、同じ内容が張り付きます。
基本的には、貼付けが終了したら、クリップボードをクリアするがマナーです。
貼付のオプションで、書式だけとか、値だけというような使い分けができます。
単純に、Pasteは、全部が対象となります。
   
もうひとつ、クリップボードを経由せずにコピペする方法
   

Range("A1:H100").Copy Destination:=Range("N10")
 

投稿日時: 21/04/18 06:54:43
投稿者: A太郎

simple様
 
ありがとございます!
オブジェクト毎に、使えるプロパティ、メソッドが定義されているのですね。
ヘルプを見る癖をつけたいと思います!
 
 
WinArrow様
 
補足ありがとうございます!
処理の仕組みを理解するのがコードを書くうえで重要ですね。
そういったあたりも勉強して行きたいとおもいます。