アプリ版:「スタンプのみでお礼する」機能のリリースについて

二つのエクセルファイルを開いてセルをコピーしようとすると、コピー元はコピーしたセルが破線になって動いてるのですが、他のブックへ貼付けようとすると、コピー元のセル選択が解除されていて貼り付けられません。
コピー元のブックは手動計算で使用していてブックの切り替え時に自動計算になるようにしており、これが関係ありそうなのですが対処法が分かりません。
教えていただけないでしょうか。
よろしくお願いたします。

質問者からの補足コメント

  • 回答ありがとうございます。
    >コードを載せて貰うと、良い回答ができるかも知れません。
    コピー開始~貼り付けはランダムなので手で行っています。
    その他コードは
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    で手動計算モードへ移行
    Private Sub Workbook_BeforeClose(Cancel As Boolean) 'ファイルを閉じる前に

    Private Sub Workbook_Deactivate() 'bookが切り替わると
    で'自動計算モードへ移行
    しています。
    プロシージャにコピー&貼付けが見当たらないのですが、
    コピー時にイベント無効、貼付け(又は貼付けしなかった)後にイベント有効にするにはどうすればよいでしょうか?
    よろしくお願いいたします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2022/04/24 11:22
  • No.1さんへ。
    回答ありがとうございます。
    >もしそうであれば、切り替えた時点でコピーモードはリセットされますね。
    そうなんです。コピー中は手動/自動計算しないようにできればよいのですが・・・
    何かいい方法はないでしょうか?
    よろしくお願いいたします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/04/24 11:33

A 回答 (5件)

参考になれば幸いです。



Private Sub Workbook_Deactivate()
Dim r As Range

If Application.CutCopyMode Then
Set r = Windows(ThisWorkbook.Name).Selection
End If

Application.Calculation = xlAutomatic

If Not r Is Nothing Then
r.Copy
End If

End Sub

ただし、「コピー」→「他ブックをアクティブにしてペースト」が前提です。他ブックをアクティブにする前に、別のセルを選択とかすると、そのセルがコピーされてしまいます。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
>他ブックをアクティブにする前に、別のセルを選択とかすると、そのセルがコピーされてしまいます。
はとくに気になりませんでした。
ありがとうございました。

お礼日時:2022/04/25 15:56

こんにちは



よこからですが・・・

(計算モードを切り替える前に、selectionの範囲を記録しておき、)最後に、再度 セル範囲.Copy としておけば、セル選択でのコピーには対応できそうな気がします。
()内の処理は不要かも知れません。

数式バーで、「セルの値」や「セルの値の一部」をコピーしている場合には、上記では対応しきれませんけれど・・
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
ただ、
>計算モードを切り替える前に、selectionの範囲を記録しておき、
の方法が良くわからなかったです。
でも、うまくいきそうな気がします。
ありがとうございました。

お礼日時:2022/04/25 16:00

No.2の者です。



直接の方法で、良い案が見付からないですね。
例えば、コピー元のブックを最初に自動にしてからコピーとかでは、
ダメでしょうか?
例えばCtrl + Cに、下記のデータのコピーのショートカットキーを登録。
コピーする際は、範囲を選択した状態で、Ctrl + C にてコピーする。
(右クリックでのコピー等不可ですが。)

下記を、記載しておく。
Sub データのコピー()
Application.Calculation = xlAutomatic
Selection.Copy
End Sub

【VBA】ショートカットキーを割り当てる
https://daitaideit.com/vba-set-shortcut-key/

下記で、xlAutomatic以外だったら、xlAutomaticにする様なコードを記載。

Private Sub Workbook_Deactivate()
If Application.Calculation <> xlAutomatic Then
Application.Calculation = xlAutomatic
End If
処理
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
うまくいきました。
ありがとうございました。

お礼日時:2022/04/25 15:54

おはようございます。



>ブックの切り替え時に自動計算になるようにしており、
→マクロをどの様に組まれているか分かりませんが、上記のマクロの操作で
コピーが解除されているのでは?と思います。 そのコードを見直すとか、
イベントでしたら、一旦無効にされては?と思います。

イベントの無効、貼り付け処理したあとに、Trueに戻される方が良いかと。
Application.EnableEvents = False

https://xtech.nikkei.com/it/pc/article/NPC/20070 …

もし、上記以外でしたら、コピー開始~貼り付け、その間に処理される
コードを載せて貰うと、良い回答ができるかも知れません。
この回答への補足あり
    • good
    • 0

>ブックの切り替え時に自動計算になるようにしている


Workbook_Deactivateイベントプロシジャの中で、自動計算への切り替えをを行っているってことですか?
もしそうであれば、切り替えた時点でコピーモードはリセットされますね。

「コピー中であれば、自動計算への切り替えをしない」ように変更できるのであれば簡単そうですが、要件的に無理そうなので、結構、厳しいかもです。

「張り付けさえできれば良い」ということであれば、クリップボードの内容を表示して、そこから選択すればできますけど・・・(添付画像参照。ただし、Excelのバージョンは古いので・・・)。
「エクセル ブック間のコピー」の回答画像1
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!