[[20220412093117]] 『PasteSpecial実行時の1004エラーについて』(初心者b) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『PasteSpecial実行時の1004エラーについて』(初心者b)

シート1のA1セルを切り取って、シート2のA1に貼り付ける。という処理を行うコードを記載しました(以下参照)。
ですが、PasteSpecialの実行行で1004エラーが発生します。
※selectとpasteSpecialの記載を分けたのはわざとですが、不要?

ネット情報でDoEventを挟めばよいという内容がありましたが、うまくいかず。(クリップボード内の制御問題の解決策?)

この事象の解決策をお教えください。
※なぜ、発生するのか原因も知りたいです。

Option Explicit

Sub 比較()

    Dim wb As Workbook
    Dim ws1 As Worksheet, ws2 As Worksheet

    Set wb = ThisWorkbook
    Set ws1 = wb.Worksheets("Sheet1")
    Set ws2 = wb.Worksheets("Sheet2")

    ws1.Range("A1").Cut
    ws2.Activate
    ws2.Range("A1").Select
    Selection.PasteSpecial
End Sub

< 使用 Excel:unknown、使用 OS:unknown >


こんにちわ ^^
解決は。。。その。あえて、PasteSpecial
使わずとも。ws1.Range("A1").Cutの次に
 ws2.Range("A1")とすれば。。。^^;
PasteSpecial
そのものの動作研究という事でしたら
深く掘り下げてご研究されている回答者様の
お出ましをお待ちください。

(隠居Z) 2022/04/12(火) 09:52


 手動で試すと(2016です)
 「切り取り」すると、「形式を選択して貼り付け」ができません。
 「切り取り」の後は、「貼り付け」しかできません。(「切り取ったセルの挿入」もできますが)
 手動で出来ないので、VBAでも出来ないのでは??
 少なくとも、マクロの記録で、Cut → PasteSpecial のコードは作れないです
(´・ω・`) 2022/04/12(火) 10:01

 あっと、< 使用 Excel:unknown、使用 OS:unknown > なので、
 はずしてるかもしれません。
 自分の使ってるバージョンくらい知ってて欲しいですけどね...
(´・ω・`) 2022/04/12(火) 10:09

回答ありがとうございます。
> 「切り取り」すると、「形式を選択して貼り付け」ができません。
盲点でした!指定セルへの貼り付けをしたく"Range().PasteSpecial"の記載をしてしまったのが、沼の始まりだったようです。
下記2コードを試し動作確認できました。
PasteSpecialはPasteの上位互換なのかなと、曖昧な理解で使っていた罰ですね。
PasteとPasteSpecialの使えるオブジェクト?クラス?の違いや、動作の違いについて改めて勉強します。
ありがとうございました。


  ws1.Range("A1").Cut
  ws2.Activate
  ws2.Range("A1").Select
  ws2.Paste
〜


  ws1.Range("A1").Copy
  ws2.Activate
  ws2.Range("A1").PasteSpecial
〜

(初心者b) 2022/04/12(火) 10:18


あっ、pasteSpecialなら、"ws2.Activete"要りませんね
(初心者b) 2022/04/12(火) 10:22

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.